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

Dro*_*ode 24 c# hex byte type-conversion

这似乎是一个容易出问题,但我无法弄清楚.

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

byte b = Convert.ToByte('<');
Run Code Online (Sandbox Code Playgroud)

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

Hen*_*man 23

60 == 0x3C.

你已经有了正确的答案,但是你却以错误的方式看待它.

0x是十六进制前缀
3C是3 x 16 + 12


Dar*_*rov 16

您可以使用该BitConverter.ToString方法将字节数组转换为十六进制字符串:

string hex = BitConverter.ToString(new byte[] { Convert.ToByte('<') });
Run Code Online (Sandbox Code Playgroud)

或者干脆:

string hex = Convert.ToByte('<').ToString("x2");
Run Code Online (Sandbox Code Playgroud)


cc4*_*4re 5

char ch2 = 'Z';
Console.Write("{0:X} ", Convert.ToUInt32(ch2));
Run Code Online (Sandbox Code Playgroud)


Hei*_*nzi 5

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

不,你没有得到任何代表.byte在某些内部表示中,您得到的值为60/3c .当你看它时,即,当你将它转换为字符串(显式地ToString()或隐式地)时,你得到十进制表示60.

因此,您必须确保将字节显式转换为字符串,指定所需的基数.ToString("x")例如,将数字转换为十六进制表示:

byte b = Convert.ToByte('<');  
String hex = b.ToString("x");
Run Code Online (Sandbox Code Playgroud)