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