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

Har*_*Raj 2 c# arrays hex byte text-parsing

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

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

例如:

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";
Run Code Online (Sandbox Code Playgroud)

这里我不是说 File.ReadAllBytes(filename)

我试过的是读取文本文件,File.ReadAllText(filename)但遗憾的是,它是一个Format不是byte格式的字符串......

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

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

提前致谢..

Dmi*_*nko 5

如果我理解正确的话,你有一个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";
Run Code Online (Sandbox Code Playgroud)

并且您想获得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();
Run Code Online (Sandbox Code Playgroud)