我使用串口接收数据,并且我使用以下代码将字符串转换为十六进制表示并在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),我的代码有什么问题? 你可以帮忙吗
答案 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);