从串口读到一组byte[]数据包,现要将每两个8位的byte组合成一个16位的int,请问C#如何实现
解决方案 »
- 冒泡排序与选择排序~
- wince datagrid改变列宽问题
- 急急急!!!如何不用控件显示(比如用Lable显示),跪求CS,页面代码
- 高手进~~~
- 怎样让SOCKET接收数据时能全部接收完所有数据?
- AT指令怎么发送带端口短信吗?
- pictureBox里如何设置坐标的问题!
- 怎样实现在DateTimePicker控件中显示完整时间
- __________________________________一个线程相关的典型问题__________________________________
- 如何把DATAGRID的列名处变为一个COMBOX之类的下拉控件。
- 一个方法,参数不定,如何设计
- 关于批处理(InstallUtil)的问题?
//startIndex 起始位置
Array.Reverse(buf); //字节序反转
Int16 i = BitConverter.ToInt16(buf, startIndex);
这要看你的机器了!
一般来讲,计算机存在低位优先和高位有先两种。你的分情况:
1、低位优先:0x1234在内存中表示为,第一字节34,第二字节12。
2、高位优先:0x1234在内存中表示为,第一字节12,第二字节34。
这与机器硬件有关。
另外,你读出的两个字节,哪个是高位哪个是低位呢?
你可以使用乘法和加法来避免这个问题。
int16=256*高位+低位。
byte[] bt=new byte[6]{0x11,0x28,0x02,0xF3,0x1E,0x17};
Int16[] it = new Int16[3];
int i = 0;
while( i < 6 )
{
Int16 temp = Convert.ToInt16(bt[i] * 256 + bt[i+1]);
it[i / 2] = temp;
i += 2;
}
return it;