C#中的十六进制到纯文本的转换

问题描述

我需要将字节数组转换为可读的纯文本字符串。我看过这个 How do you convert a byte array to a hexadecimal string,and vice versa? 但它把它转换成 ASCII 的十六进制字符串。我正在寻找等效的纯文本字符串。

即当您使用本网站 https://codebeautify.org/hex-string-converter 时,您应该能够发布您的十六进制文本并获得转换后的字符串。

以这个十六进制字符串为例:47617465776179536572766572,纯文本输出GatewayServer 我想在代码中实现这一点..我的数据包数据以字节数组的形式出现。

解决方法

简单的 Linq 似乎就足够了:我们提取 ascii 代码:476174、... 72 将它们转换进入char,最后将Concat所有这些字符转化为string

代码:

  using System.Linq;
  using System.Globalization;
  ...

  string source = "47617465776179536572766572";

  string result = string.Concat(Enumerable
    .Range(0,source.Length / 2)
    .Select(i => (char)int.Parse(source.Substring(2 * i,2),NumberStyles.HexNumber)));

  // Let's have a look
  Console.Write(result);

结果:

  GatewayServer
,

你可以这样做

var encodingString = System.Text.Encoding.Default.GetString(byteArray);