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;
}

장치데이터 읽은 쪽에서 유용한다.


by 무위자연 2015. 10. 28. 16:46