web-dev-qa-db-ja.com

C#文字をバイトに変換(16進表現)

これは簡単な問題のようですが、わかりません。

この文字を変換する必要があります<バイト(16進表記)で、しかし私が使用する場合

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

cではなく6(10進表現)を取得します。

23
DropTheCode

60 == 0x3C

あなたはすでに正しい答えを持っていますが、間違った方法でそれを見ています。

0xは16進数のプレフィックスです
3Cは3 x 16 + 12

23
Henk Holterman

BitConverter.ToString バイト配列を16進文字列に変換する方法:

string hex = BitConverter.ToString(new byte[] { Convert.ToByte('<') });

または単に:

string hex = Convert.ToByte('<').ToString("x2");
16
Darin Dimitrov

3cの代わりに60(10進数表現)を取得します。

いいえ、表示されません。何らかのinternal表現で値60/3cを含むbyteを取得します。あなたがそれを見るとき、すなわち、それを文字列に変換するとき(明示的にToString()または暗黙的に)、あなたは10進数表現6

したがって、明示的にバイトを文字列に変換すること、必要なベースを指定するであることを確認する必要があります。 ToString("x")は、たとえば、数値を16進数表現に変換します。

byte b = Convert.ToByte('<');  
String hex = b.ToString("x");
5
Heinzi
char ch2 = 'Z';
Console.Write("{0:X} ", Convert.ToUInt32(ch2));
4
cc4re

ToString("x")を使用して、数値を16進数に変換します。

string asHex = b.ToString("x");

ただし、「<」文字をバイトに変換するコードはその特定の文字では機能しますが、非ANSI文字(バイトに収まらない)では機能しないことに注意してください。

3
Matthew Watson