文章目录
Qt编程技巧小知识点(5)GPIB缓存区数据读取(升级版)
大端小端的问题,GPIB返回的数据经常是小端数据,而我们转化需要大端数据,看代码,Qt的这个函数很好用哦!
- 代码输入
// 添加库文件
#include <QtDebug>
#include <QtEndian>
QByteArray num1Str="40971FFEA2D38007";
QString str = num1Str;
quint64 num=str.toULongLong(nullptr,16);//数据类型转化
quint64 bigEndianNum= qToBigEndian(num);//大端数据转化
quint64 littleEndianNum = qToLittleEndian(num);//小端数据转化
qDebug()<<"QByteArray numlStr = "<< num1Str;
qDebug()<<"QString str = "<< str;
qDebug()<<"quint64 hex= "<< QString::number(num,16); //十六进制显示
qDebug()<<"quint64 bigEndianNum = "<<QString::number(bigEndianNum,16);
qDebug()<<"quint64 littleEndianNum = " << QString::number(littleEndianNum,16);
- 下面是 qDebug()的输出结果:
QByteArray num1Str="40971FFEA2D38007"
QString str = "40971FFEA2D38007"
quint64 hex = "40971ffea2d38007"
quint64 bigEndianNum ="780d3s2fe1f9740"//这个便是我们要的转换结果
quint64 lttleEndianNum="49971ffea2d38007"
- 另外,如果实现64位二进制或16位十六进制的实型(double)数据转换,这个函数非常好用,代码分享在下面了。
QByteArray num1Str="40971FFEA2D39997";
QString str = num1Str;
quint64 num=str.toULongLong(nullptr,16);//数据类型转化
double data = *(double *)#
- 具体的计算过程,参加下图讲解,下图分别讲解的是 32 位的float型转换与64位的double型转换。
- 32 位的float型转换
- 64位的double型转换
小结
学习,加油,共勉。
标签:知识点,Qt,double,num,quint64,str,num1Str,GPIB From: https://blog.csdn.net/weixin_42269028/article/details/143194202