简体   繁体   中英

C# Convert Char to Byte (Hex representation)

This seems to be an easy problem but i can't figure out.

I need to convert this character < in byte(hex representation), but if i use

byte b = Convert.ToByte('<');

i get 60 (decimal representation) instead of 3c .

60 == 0x3C .

You already have your correct answer but you're looking at it in the wrong way.

0x is the hexadecimal prefix
3C is 3 x 16 + 12

You could use the BitConverter.ToString method to convert a byte array to hexadecimal string:

string hex = BitConverter.ToString(new byte[] { Convert.ToByte('<') });

or simply:

string hex = Convert.ToByte('<').ToString("x2");

get 60 (decimal representation) instead of 3c.

No, you don't get any representation. You get a byte containing the value 60/3c in some internal representation. When you look at it , ie, when you convert it to a string (explicitly with ToString() or implicitly), you get the decimal representation 60 .

Thus, you have to make sure that you explicitly convert the byte to string, specifying the base you want . ToString("x") , for example will convert a number into a hexadecimal representation:

byte b = Convert.ToByte('<');  
String hex = b.ToString("x");
char ch2 = 'Z';
Console.Write("{0:X} ", Convert.ToUInt32(ch2));

You want to convert the numeric value to hex using ToString("x") :

string asHex = b.ToString("x");

However, be aware that you code to convert the "<" character to a byte will work for that particular character, but it won't work for non-ANSI characters (that won't fit in a byte).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM