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('&lt;');GetBytes 方法也不会像您认为的那样做。它不需要一个十六进制字符串。它需要一个简单的字符串,其中每个字符都使用指定的编码转换为一个字节——它与十六进制无关。如果要从十六进制字符串中获取原始字节数组,应执行以下操作:***.com/a/311179/29407

以上是关于C# 将字符转换为字节(十六进制表示)的主要内容,如果未能解决你的问题,请参考以下文章

C#如何将大的十六进制字符串转换为二进制

将十六进制 unicode 字符转换为其可视化表示

将字符串转换为十六进制字节数组[重复]

将字节数组转换为十六进制字符串

C# 怎么把十进制数字转换成字符

C# 在表示字符串的大字节数组中寻找子数组