ASCII Code Of Characters

In C# I need to get the ASCII code of some characters. So I convert the char To byte Or int, then print the result.

String sample="A";
int AsciiInt = sample[0];
byte AsciiByte = (byte)sample[0];

For characters with ASCII code 128 and less, I get the right answer.
But for characters greater than 128 I get irrelevant answers!

I am sure all characters are less than 0xFF.

Also I have Tested System.Text.Encoding and got the same results.

For example: I get 172 For a char with actual byte value of 129!

Actually ASCII characters Like ƒ , ‡ , ‹ , “ , ¥ , © , Ï , ³ , · , ½ , » , Á
Each character takes 1 byte and goes up to more than 193. I Guess There is An Unicode Equivalent for Them and .Net Return That Because Interprets Strings As Unicode!
What If SomeOne Needs To Access The Actual Value of a byte , Whether It is a valid Known ASCII Character Or Not!!!

Jon Skeet
people
quotationmark

But For Characters Upper Than 128 I get Irrelevant answers

No you don't. You get the bottom 8 bits of the UTF-16 code unit corresponding to the char.

Now if your text were all ASCII, that would be fine - because ASCII only goes up to 127 anyway. It sounds like you're actually expecting the representation in some other encoding - so you need to work out which encoding that is, at which point you can use:

Encoding encoding = ...;
byte[] bytes = encoding.GetBytes(sample);
// Now extract the bytes you want. Note that a character may be represented by more than
// one byte.

If you're essentially looking for an encoding which treats bytes 0 to 255 respectively as U+0000 to U+00FF respectively, you should use ISO-8859-1, which you can access using Encoding.GetEncoding(28591).

people

See more on this question at Stackoverflow