Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 十六进制字符串到ASCII的转换工作正常,但不是所有字符都可以_C#_Visual Studio_Visual Studio 2017_Hex_Ascii - Fatal编程技术网

C# 十六进制字符串到ASCII的转换工作正常,但不是所有字符都可以

C# 十六进制字符串到ASCII的转换工作正常,但不是所有字符都可以,c#,visual-studio,visual-studio-2017,hex,ascii,C#,Visual Studio,Visual Studio 2017,Hex,Ascii,我正在尝试使用visual studio community 2017在c#中将十六进制字符串转换为ASCII。 我的十六进制字符串如下所示 070196000008220031CE4745542073776964FD48 当我将其转换为ASCII时,它如下所示 我的困惑是为什么它显示ASCII“\a”表示十六进制“07”??应该是。十六进制“01”的ASCII值应为,但显示“\u0001”。ASCII控制字符和扩展ASCII字符也是如此 有人能解释一下吗!我是否错过了什么,以及如何做到这一

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

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

我的困惑是为什么它显示ASCII“\a”表示十六进制“07”??应该是。十六进制“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;
     }
公共字符串转换器hextoascii(字符串hextString)
{
尝试
{
字符串ascii=string.Empty;
for(int i=0;i

提前感谢。

如果某些字符是字符串文字,则可以在
\u1234
之外的方式对其进行转义。
\a
对应于“铃声(警报)”字符-Unicode(和ASCII)代码点7(0x0007)。如果可能,调试器似乎更喜欢这些替代转义而不是
\u1234
格式

。但是,您希望从字符串内容中得到什么样的结果呢?它的大部分内容无法转换为可打印的ASCII字符。此外,您的数据不是ASCII,但这没关系,因为.NET不使用ASCII。它使用字符集的UTF-16字符编码。不过,有一个问题是,您一次获取两个十六进制数字,并将它们解释为UTF-16代码单元(需要按照约定的顺序使用两个字节/四个数字)。考虑编码类将字节转换为字符串。ASCII字符序列将作为命令发送到硬件以获得响应。当我发送这个序列-“É7GET swidýH”时,我从终端的硬件得到响应。我正在尝试对C#程序做同样的操作。这是一个肯定需要在问题中指定的信息。粗体。阅读Tom Blodget写的,你需要更改的都在那里。