c# - 从十六进制转换为字符串

标签 c# string hex bitconverter

我需要检查一个 string 位于我收到的数据包中作为 byte 数组。如果我使用 BitConverter.ToString(),我得到的字节是 string 和破折号(例如:00-50-25-40-A5-FF)。
我尝试了快速谷歌搜索后发现的大多数函数,但大多数函数都有输入参数类型 string ,如果我用带有破折号的 string 调用它们,它会抛出异常。

我需要一个函数,将十六进制(如 stringbyte)转换为表示十六进制值(例如:0x31)的 string = 1).如果输入参数是string,函数应该识别破折号(例如“47-61-74-65-77-61-79-53-65-72-76-65-72”),因为 BitConverter 没有正确转换。

最佳答案

像这样吗?

static void Main()
{
    byte[] data = FromHex("47-61-74-65-77-61-79-53-65-72-76-65-72");
    string s = Encoding.ASCII.GetString(data); // GatewayServer
}
public static byte[] FromHex(string hex)
{
    hex = hex.Replace("-", "");
    byte[] raw = new byte[hex.Length / 2];
    for (int i = 0; i < raw.Length; i++)
    {
        raw[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
    }
    return raw;
}

关于c# - 从十六进制转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/724862/

相关文章:

windows - 最小化字符数的简单数字到数字(或数字到十六进制)加密算法

c# - 仅打开特定图像到图片框而不打开文件对话框

c# - 将 typeof(T) 转换为 T

c - 这种字符串检索方法有什么缺点吗?

凯撒密码

android HEX 颜色在某些设备上不起作用

c - 如何为该程序正确格式化输出?

c# - 使用 WebClient.UploadFile 时无响应

c# - 从 MySQL 获取正确的酒店费率

java - 在 Java 中从字符串列表中查找每个短语出现次数的最佳方法