QByteArray s_byte;

    s_byte.append((char)0x7e);

    bool ok;

    int t = s_byte.toHex().toInt(&ok, 16);


    QByteArray tmp,tmp2;

    //tmp.append((char)0x00);

    //tmp.append((char)0x01);

    tmp.append((char)0x7e);

    tmp.append((char)0x0c);


    tmp2.append((char)0xff);

    tmp2.append((char)0xff);


    bool isok;

    int size = 0;

    //Log() <<  QString().sprintf("4 : %05f", tmp2.toDouble(&isok));

    size = tmp2.toHex().toInt(&isok, 16);

    Log() << size;

    size = tmp.toHex().toInt(&isok, 16);

    Log() << size;

    Log();


테스트는 1자리, 2자리까지만 해봄.

0~FFFF까지.


by 무위자연 2015. 11. 18. 14:06

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

1. hex 값이 들어 있는 QbyteArray를 String으로 만들 때

QString temp = QString(tarr.toHex());

QString().sprintf 으로 할려니까 노답.


2. hex값 들이 나열된 string을 int로 바꿀 때

qint64 tvalue = temp.toInt(&ok, 16);

3. Windows의 localtime32로 생성한 데이터를 바이너리 데이터로 저장하고 QT에서 읽어올때

1,2번을 거쳐서 만든 값은 sec 값으로서 해당 값에 1000을 곱해준 다음에 밀리세컨드를 시간으로 변경해주는 함수를 사용한다.

QDateTime datatime = QDateTime::fromMSecsSinceEpoch(tvalue * 1000);

4. 10진수 값을 hex string으로 만들때.

QString::number(temp_number[1], 16)

만일 이 값의 "0"으로 자릿수를 맞추면서 hex로 변환한다고 한다면

QString("%1").arg(temp_number[1], 2, 16, QLatin1Char( '0' )).toUpper()


by 무위자연 2015. 3. 3. 15:42
| 1 |