最近在做一个水厂的检测项目,4G设备向服务器发送socket请求,涉及到了整数和浮点数的传输,需要将字节数组还原成可读的数据,总结如下:
读取数据时,每4位数字是一个值,前2位是低字节,后2位是高字节,先读取高字节数,再读取低字节数
byte[] data = {-15, 71, 60, 109, 18, 51, 63, 95, 33, 15, 66, 81, 57, -32, 62, -125, -13, 37, 0, 0};
//offset:从哪位开始读起
private static float readFlowRate(int offset, byte[] data) {
byte[] newData = new byte[4];
float flowRate = 0.0f;
newData[0] = data[offset + 2];
newData[1] = data[offset + 3];
newData[2] = data[offset];
newData[3] = data[offset + 1];
ByteBuffer buf = ByteBuffer.allocateDirect(4);
buf.put(newData);
buf.rewind();
flowRate = buf.getFloat();
return flowRate;
}