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

问题描述

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

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

例如:

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

在这里不是故意 File.ReadAllBytes(filename)

我尝试用File.ReadAllText(filename)读取文本文件,但不幸的是,多数民众赞成在字符串Format中而不是byte格式...

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

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

先谢谢了。

解决方法

如果我理解正确,那么您会有这样的string

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

,您想获取byte[](数组)。如果是您的情况,可以在正则表达式的帮助下尝试 matching

  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();
,

尝试一下:

async post(url,body = {}) {
    var queryIndex = url.indexOf('?');
    var httpPart = url.slice(0,queryIndex);
    var finalUrl = url.replace(httpPart,":url..."); 
    return new Promise((resolve,reject) => {
       m.request({method: 'POST',url: finalUrl,body,params: {url: httpPart}}).then((data) => {
                resolve(data);
            }).catch((err) => {
                reject(err.message);
            });
        });
 }