c#利用S7 NET与西门子1500PLC走S7协议时大小端转换问题
最近在使用C#与西门子1500PLC走S7协议通讯时,发现传输到PLC的数据与要传输的数据不一样,需要更改大小端。
根据数据类型写了一个更改大小端的方法 即交换字节顺序,如下:
static byte[] convertArray = new byte[4];
private static byte[] GetArray(int value)
{
convertArray = System.BitConverter.GetBytes(value);
byte midvar = 0;
midvar = convertArray[0];
convertArray[0] = convertArray[3];
convertArray[3] = midvar;
midvar = convertArray[1];
convertArray[1] = convertArray[2];
convertArray[2] = midvar;
return convertArray;
}
因读取数据时需要读取字节数组,再用这种方法转换比较繁琐,查找资料后优化为 使用Array.Reverse()方法。实现如下:
static byte[] convertArray = new byte[4];
private static byte[] GetArray(float value)
{
convertArray = System.BitConverter.GetBytes(value);
Array.Reverse(convertArray);
return convertArray;
}
极大的简