十六进制字符串到ASCII的转换有效,但不适用于所有字符

时间:2019-01-23 14:27:51

标签: c# visual-studio visual-studio-2017 hex ascii

我正在尝试使用Visual Studio Community 2017在c#中将十六进制字符串转换为ASCII。 我的十六进制字符串如下所示

070196000008220031CE4745542073776964FD48

当我将其转换为ASCII时,如下所示

enter image description here

我的困惑是为什么它为十六进制“ 07”显示ASCII“ \ a”?它应该是 。十六进制“ 01”的ASCII值应为,但显示“ \ u0001”。 ASCII控制字符和扩展ASCII字符都相同。

有人可以解释一下!我是否想念任何东西以及如何得到那样的东西。

我用来转换hextoascii的代码

    public string ConvertHextoASCII(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);
                int decval = System.Convert.ToInt32(hs, 16);
                char character = System.Convert.ToChar(decval);
                ascii += character;
            }
            return ascii;
        } 
        catch (Exception ex) { Console.WriteLine(ex.Message); }

        return string.Empty;
     }

谢谢。

1 个答案:

答案 0 :(得分:1)

如果某些字符位于字符串文字中,则可以用\u1234以外的其他方式进行转义。 \a对应于“响铃(警告)”字符-Unicode(和ASCII)代码点7(0x0007)。可能的话,调试器似乎更喜欢这些替代转义而不是\u1234格式。 Here's the full list of escape sequences in C# string literals.