これは簡単な問題のようですが、私には理解できません。
この文字をバイト(16進表現)で変換する必要がありますが、
byte b = Convert.ToByte('<');
3cの代わりに60(10進表現)を取得します。
これは簡単な問題のようですが、私には理解できません。
この文字をバイト(16進表現)で変換する必要がありますが、
byte b = Convert.ToByte('<');
3cの代わりに60(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");
char ch2 = 'Z';
Console.Write("{0:X} ", Convert.ToUInt32(ch2));
3c の代わりに 60 (10 進表現) を取得します。
いいえ、あなたは何の代表も得ません。何らかの内部表現byte
で値 60/3c を含む を取得します。それを見ると、つまり、文字列に (明示的にまたは暗黙的に)変換すると、 10 進数表現 60が得られます。ToString()
したがって、必要な基数を指定して、バイトを明示的に文字列に変換する必要があります。たとえば、数値を16 進数表現に変換します。ToString("x")
byte b = Convert.ToByte('<');
String hex = b.ToString("x");
次を使用して数値を16進数に変換しますToString("x")
。
string asHex = b.ToString("x");
ただし、「<」文字をバイトに変換するコードは、その特定の文字では機能しますが、ANSI 以外の文字 (バイトに収まらない) では機能しないことに注意してください。