C#将字符转换为字节(hex表示)

这似乎是一个容易的问题,但我无法弄清楚。

我需要转换此字符<字节(hex表示),但如果我使用

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

我得到60 (十进制表示)而不是3c

60 == 0x3C

你已经有了正确的答案,但是你却以错误的方式看待它。

0x是hex前缀
3C是3 x 16 + 12

您可以使用BitConverter.ToString方法将字节数组转换为hex字符串:

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

或者干脆:

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

得到60(十进制表示)而不是3c。

不,你没有任何代表。 在某些内部表示中,您得到一个包含值60 / 3c的byte 。 当你看它时 ,即,当你将它转换为字符串(显式地使用ToString()或隐式)时,你得到十进制表示60

因此,您必须确保将字节显式转换为字符串, 指定所需的基数ToString("x")会将数字转换为hex表示forms:

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

您想使用ToString("x")将数值转换为hex:

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

但是,请注意,将“<”字符转换为字节的代码将适用于该特定字符,但它不适用于非ANSI字符(不适合字节)。