C / C++에서 float 형으로 저장된 값을 메모리에 쓰고
그 메모리있는 hex 값을 읽어서 qt에서 float으로 원복하는 방법.
1. 각 메로리에 있는 hex 값을 읽어온다.
QByteArray temparr;
temparr.append(((rcvPacket[1] & 0x0F)*16 + (rcvPacket[2] & 0x0F)));
temparr.append(((rcvPacket[4] & 0x0F)*16 + (rcvPacket[5] & 0x0F)));
temparr.append(((rcvPacket[7] & 0x0F)*16 + (rcvPacket[8] & 0x0F)));
temparr.append(((rcvPacket[10] & 0x0F)*16 + (rcvPacket[11] & 0x0F)));
2. 읽어온 데이터를 역으로 읽어서 계산한다.
float gainslope = bytesToFloat(temparr[3], temparr[2], temparr[1], temparr[0])
float SerialProtocol3::bytesToFloat(uchar b0, uchar b1, uchar b2, uchar b3)
{
float output;
*((uchar*)(&output) + 3) = b0;
*((uchar*)(&output) + 2) = b1;
*((uchar*)(&output) + 1) = b2;
*((uchar*)(&output) + 0) = b3;
return output;
}
장치데이터 읽은 쪽에서 유용한다.
RECENT COMMENT