十六进制字符串到ASCII转换和ASCII到十六进制转换问题

时间:2015-03-19 11:10:25

标签: c# hex ascii

我编写了两种方法将Hex字符串转换为ASCII,将ASCII字符串转换为Hex字符串。但是当我比较两个字符串时,我得到了两个不同的Hex字符串。

例如: 十六进制字符串= 6220000008a01000

我使用以下方法将此字符串转换为ASCII

public static string ConvertHex(string hexString)
{
    try
    {
        string ascii = string.Empty;

        for (int i = 0; i < hexString.Length; i += 2)
        {
            string hs = string.Empty;

            hs = hexString.Substring(i, 2);
            ulong decval = Convert.ToUInt64(hs, 16);
            long deccc = Convert.ToInt64(hs, 16);
            char character = Convert.ToChar(deccc);
            ascii += character;

        }

        return ascii;
    }
    catch (Exception ex) { Console.WriteLine(ex.Message); }

    return string.Empty;
}

我使用以下方法将该ASCII值转换回十六进制字符串

public string ASCIItoHex(string Value)
{
    StringBuilder sb = new StringBuilder();

    byte[] inputByte = Encoding.UTF8.GetBytes(Value);

    foreach (byte b in inputByte)
    {
        sb.Append(string.Format("{0:x2}", b));
    }

    return sb.ToString();
}

但是作为最后的十六进制字符串,我得到了字符串。

十六进制字符串= 6220000008c2a01000

任何人都可以帮我弄清楚那里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

您尝试将十六进制字符串的两个字符(如“FF”)表示为单个char。这不起作用。

您的“hexString”已经是十六进制数字的字符串表示形式。

相关问题