如何将具有十六进制代码序列的文本文件转换为字节数组?

How to convert a text file having a hexadecimal code sequence into a byte array?

所以我想知道是否有可能从文本文件中读取十六进制的纯文本字节序列?

字节以文本格式保存到文本文件

例如:

string text = 
  @"0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
    0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00";

我这里不是这个意思File.ReadAllBytes(filename)

我尝试用 File.ReadAllText(filename) 读取文本文件,但遗憾的是那是字符串 Format 而不是 byte 格式...

我们需要将这些文本序列转换为byte数组。

这些文本序列是存储在文本文件中的实际字节。

提前致谢..

如果我没理解错的话,你有这样的string

  string text =
    @"0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
      0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00";

并且您想获得 byte[] (数组)。如果是这种情况,您可以在 正则表达式 :

的帮助下尝试 匹配
  using System.Linq;
  using System.Text.RegularExpressions; 

  ...

  byte[] result = Regex
    .Matches(text, @"0x[0-9a-fA-F]{1,2}")     // 0xH or 0xHH where H is a hex digit
    .Cast<Match>()
    .Select(m => Convert.ToByte(m.Value, 16)) // convert each match to byte
    .ToArray();

试试这个:

var result = 
    File.ReadAllText(filename)
   .Split(',')
   .Select(item => byte.Parse(item.Trim().Substring(2), NumberStyles.AllowHexSpecifier))
   .ToArray();