備忘録

備忘録

C# 16進数文字列をbyte[]に変換する方法

Ⅰ. はじめに

タイトルの通り「16進数文字列をbyte[]に変換する方法」です。
処理速度は考慮してません。
LINQ 拡張メソッドの Chunksについては参考に書いてあるブログのコードをそのまま利用しています。

Ⅱ. 16進数文字列→byte[]

"0x000102030405"
byte[] bytes = "0x000102030405"
  .Skip(2)
  .Chunks(2)
  .Select(y => Convert.ToByte(new string(y.ToArray()), 16))
  .ToArray();

Console.WriteLine(BitConverter.ToString(bytes));
// 00-01-02-03-04-05
"000102030405"
byte[] bytes = "000102030405"
  .Chunks(2)
  .Select(y => Convert.ToByte(new string(y.ToArray()), 16))
  .ToArray();

Console.WriteLine(BitConverter.ToString(bytes));
// 00-01-02-03-04-05

Ⅲ. byte[] → 16進数文字列

var bytes = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 };
Console.WriteLine(BitConverter.ToString(bytes));
// 00-01-02-03-04-05

Console.WriteLine(BitConverter.ToString(bytes).Replace("-", ""));
// 000102030405

Console.WriteLine($"0x{string.Join(" 0x", BitConverter.ToString(bytes).Split("-"))}");
// 0x00 0x01 0x02 0x03 0x04 0x05

参考

LINQ 拡張メソッド Chunks(n)
https://webbibouroku.com/Blog/Article/chunk-linq