这似乎是一个容易出问题,但我无法弄明白。
我需要在字节(十六进制表示)中转换此字符< ,但如果我使用
byte b = Convert.ToByte('<');
我得到 60 (十进制表示)而不是 3c 。
答案 0 :(得分:22)
60 == 0x3C
。
你已经有了正确的答案,但你却以错误的方式看待它。
0x
是十六进制前缀
3C
为3 x 16 + 12
答案 1 :(得分:14)
您可以使用BitConverter.ToString
方法将字节数组转换为十六进制字符串:
string hex = BitConverter.ToString(new byte[] { Convert.ToByte('<') });
或简单地说:
string hex = Convert.ToByte('<').ToString("x2");
答案 2 :(得分:5)
得到60(十进制表示)而不是3c。
不,你没有得到任何陈述。您会在某些内部表示中获得包含值60 / 3c的byte
。当您查看时,即当您将其转换为字符串(明确地使用ToString()
或隐式)时,您将获得十进制表示60 。
因此,您必须确保显式将字节转换为字符串,指定您想要的基础。例如ToString("x")
会将数字转换为十六进制表示形式:
byte b = Convert.ToByte('<');
String hex = b.ToString("x");
答案 3 :(得分:4)
char ch2 = 'Z';
Console.Write("{0:X} ", Convert.ToUInt32(ch2));
答案 4 :(得分:3)
您想使用ToString("x")
将数值转换为十六进制:
string asHex = b.ToString("x");
但是,请注意您编码转换&#34;&lt;&#34;一个字节的字符将适用于该特定字符,但它不适用于非ANSI字符(不符合字节)。