これは簡単な問題のようですが、わかりません。
この文字を変換する必要があります<バイト(16進表記)で、しかし私が使用する場合
byte b = Convert.ToByte('<');
cではなく6(10進表現)を取得します。
60 == 0x3C
。
あなたはすでに正しい答えを持っていますが、間違った方法でそれを見ています。
0x
は16進数のプレフィックスです3C
は3 x 16 + 12
BitConverter.ToString
バイト配列を16進文字列に変換する方法:
string hex = BitConverter.ToString(new byte[] { Convert.ToByte('<') });
または単に:
string hex = Convert.ToByte('<').ToString("x2");
3cの代わりに60(10進数表現)を取得します。
いいえ、表示されません。何らかのinternal表現で値60/3cを含むbyte
を取得します。あなたがそれを見るとき、すなわち、それを文字列に変換するとき(明示的にToString()
または暗黙的に)、あなたは10進数表現6。
したがって、明示的にバイトを文字列に変換すること、必要なベースを指定するであることを確認する必要があります。 ToString("x")
は、たとえば、数値を16進数表現に変換します。
byte b = Convert.ToByte('<');
String hex = b.ToString("x");
char ch2 = 'Z';
Console.Write("{0:X} ", Convert.ToUInt32(ch2));
ToString("x")
を使用して、数値を16進数に変換します。
string asHex = b.ToString("x");
ただし、「<」文字をバイトに変換するコードはその特定の文字では機能しますが、非ANSI文字(バイトに収まらない)では機能しないことに注意してください。