我知道可以像这样从int中提取字节:
bytes[] IntToBytes(int i)
{
return new byte [] {(byte) ((i >> 8) & 0xff), (byte) (i & 0xff)};
}
我将其作为串行传输的一部分发送。但是,我是否可以在接收到一系列字节后进行反向操作,重构原始数据并保留符号。目前,我已经这样做了,但感觉有点过头了:
int BytesToInt( byte hi, byte lo)
{
return ((hi << 24) | (lo << 16)) >> 16;
}
还有其他或更好的方法吗?如果我知道最终只涉及有符号的16位数据,这会有所不同吗?
(int)BitConverter.ToInt16(new[] {lo, hi}, 0);
- Sinatr