无法将我的字符串转换为十六进制表示

时间:2015-04-29 14:11:34

标签: c#

我使用串口接收数据,并且我使用以下代码将字符串转换为十六进制表示并在richtextbox5中显示:

string hex = "";
            foreach (char c in RXstring)
            {
                uint tmp = c;
                hex += String.Format("{0:X2}", (uint)System.Convert.ToInt16(tmp.ToString())) ;
            }

            richTextBox5.AppendText(hex + "   <= Hex");

其中RXstring是我从串口存储数据的地方。  问题是: 当我发送数据像127(十进制)=&gt; 01111111(二进制)=&GT; 7F(十六进制)它正确转换,而当我发送像191或167这样的数据时,它们共享最高有效位为1并且它们都是8位,输出尽管是其他位,但仍为3F,(从1开始的任何8位的表示是3F),我的代码有什么问题? 你可以帮忙吗

1 个答案:

答案 0 :(得分:0)

这是使用字节的一个例子 - 它似乎可以按你的意愿工作:

        string hex = "";
        byte[] RXstring = { 0xFF, 0xCF, 0xB8, 167,191 };
        foreach (byte c in RXstring)
        {
            uint tmp = c;
            hex += String.Format("{0:X2}", (uint)System.Convert.ToInt16(tmp.ToString()));
        }

        System.Console.WriteLine("{0}   <= Hex", hex);