C#将字符转换为字节(十六进制表示)

时间:2012-09-21 09:20:37

标签: c# byte type-conversion hex

这似乎是一个容易出问题,但我无法弄明白。

我需要在字节(十六进制表示)中转换此字符< ,但如果我使用

byte b = Convert.ToByte('<');

我得到 60 (十进制表示)而不是 3c

5 个答案:

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