【发布时间】:2012-09-13 17:00:47
【问题描述】:
这似乎是一个简单的问题,但我想不通。
我需要将此字符 转换为字节(十六进制表示),但如果我使用
byte b = Convert.ToByte('<');
我得到 60(十进制表示)而不是 3c。
【问题讨论】:
标签: c# byte type-conversion hex
这似乎是一个简单的问题,但我想不通。
我需要将此字符 转换为字节(十六进制表示),但如果我使用
byte b = Convert.ToByte('<');
我得到 60(十进制表示)而不是 3c。
【问题讨论】:
标签: c# byte type-conversion hex
60 == 0x3C。
您已经有了正确的答案,但您以错误的方式看待它。
0x 是十六进制前缀3C 是 3 x 16 + 12
【讨论】:
您想使用ToString("x") 将数值转换为十六进制:
string asHex = b.ToString("x");
但是,请注意,将“
【讨论】:
得到 60(十进制表示)而不是 3c。
不,你没有得到任何代表。你会得到一个byte,其中包含一些 internal 表示形式的值 60/3c。当您查看它时,即当您将其转换为字符串时(显式地使用ToString() 或隐式地),您会得到十进制表示 60。
因此,您必须确保明确将字节转换为字符串,指定所需的基数。 ToString("x"),例如会将数字转换为十六进制表示:
byte b = Convert.ToByte('<');
String hex = b.ToString("x");
【讨论】:
char ch2 = 'Z';
Console.Write("{0:X} ", Convert.ToUInt32(ch2));
【讨论】:
您可以使用BitConverter.ToString 方法将字节数组转换为十六进制字符串:
string hex = BitConverter.ToString(new byte[] { Convert.ToByte('<') });
或者简单地说:
string hex = Convert.ToByte('<').ToString("x2");
【讨论】:
.ToString,只需:byte b = Convert.ToByte('<');。 GetBytes 方法也不会像您认为的那样做。它不需要一个十六进制字符串。它需要一个简单的字符串,其中每个字符都使用指定的编码转换为一个字节——它与十六进制无关。如果要从十六进制字符串中获取原始字节数组,应执行以下操作:stackoverflow.com/a/311179/29407