23

これは簡単な問題のようですが、私には理解できません。

この文字をバイト(16進表現)で変換する必要がありますが、

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

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

4

5 に答える 5

25

60 == 0x3C.

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

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

于 2012-09-21T09:31:05.240 に答える
16

このBitConverter.ToStringメソッドを使用して、バイト配列を 16 進文字列に変換できます。

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

または単に:

string hex = Convert.ToByte('<').ToString("x2");
于 2012-09-21T09:22:02.427 に答える
6
char ch2 = 'Z';
Console.Write("{0:X} ", Convert.ToUInt32(ch2));
于 2012-09-21T09:23:56.283 に答える
4

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

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

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

byte b = Convert.ToByte('<');  
String hex = b.ToString("x");
于 2012-09-21T09:25:26.637 に答える
2

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

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

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

于 2012-09-21T09:22:51.320 に答える