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字符(不适合字节)。