4

重複の可能性:
C# でバイト配列を 16 進数文字列に、またはその逆に変換するにはどうすればよいですか?

私は文字列「AA 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF」を入力するテキストボックスを持っています。これ:

byte[] b6 = new byte[20] {0xAA,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88 ,0x99 ,0xAA ,0xBB,0xCC ,0xDD ,0xEE,0xFF};

誰かが私にそれを行う方法を提案できますか。使用しようとしましConvert.ToByteたが、変換できないというエラーが表示されます。各バイトの前に追加してバイト配列に追加するだけで、値を16進数に変換する必要はありませんStringbyte.0x

4

4 に答える 4

2
string input = "AA 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF";
byte[] bytes = input.Split().Select(s => Convert.ToByte(s, 16)).ToArray();
于 2012-10-31T13:25:13.307 に答える
1

試す

int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

文字列の分割された要素ごとにリストに追加します。

List<Byte> bytes = new List<Byte>();
foreach (var splittedValue in hexString.Split(' ')) {
    bytes.Add(int.Parse(splittedValue, System.Globalization.NumberStyles.HexNumber));
} 
return bytes.ToArray();
于 2012-10-31T13:25:41.260 に答える
0

使用できますbyte.Parse

byte[] bytes = str.Split().Select(s => byte.Parse(s, NumberStyles.HexNumber)).ToArray();

バイトを 16 進表現で表示するには、ToString オーバーライドを使用します。

foreach (var b in bytes)
{
    Console.WriteLine("0x{0:X}", b);
    //or Console.WriteLine("0x" + b.ToString("X"));
}

では、「X」形式とその変更を使用することもできますstring.Format

于 2012-10-31T13:24:20.243 に答える
-3

tostring関数を使用できます

于 2012-10-31T14:21:47.907 に答える