今天在做上位机与PLC通信时,对方是协议将数据按照int16发给上位机,但是上位机接收到的数据是高八位在前,低八位在后。而Csharp 中BitConverter.toUint16默认转换时,数据是低八位在前的,于是需要将数据进行转换。C# 自带的方法对于整型、长整型等数据类型,BitConverter.Bigendian 认为第一个字节是最高位字节,BitConverter.IsLittleEndian认为第一个字节是最低位字节。
/// <summary>
/// 字节byte 转int
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static int ByteToInt(this byte[] data)
{
if (BitConverter.IsLittleEndian)
Array.Reverse(data);
int ilen = BitConverter.ToUInt16(data, 0);
return ilen;
}