我是靠谱客的博主 典雅樱桃,最近开发中收集的这篇文章主要介绍Qt进制转换,16进制转long ABCD/CDABQt进制转换,16进制转long ABCD/CDABQt中double与float与16进制字符串之间的转换C语言:十六进制(HEX)和浮点类型(float、double)转换,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Qt进制转换,16进制转long ABCD/CDAB
long hexToABCD(const QString &hexData) // 16进制转long ABCD,大端
{
bool ok;
char data[4];
data[0] = hexData.left(2).toInt(&ok, 16);
data[1] = hexData.mid(2, 2).toInt(&ok, 16);
data[2] = hexData.mid(4, 2).toInt(&ok, 16);
data[3] = hexData.right(2).toInt(&ok, 16);
long value = 0;
QByteArray bytedata;
bytedata.setRawData((char *)&value, 4);
char *temp = (char *)&value;
temp[0] = data[3];
temp[1] = data[2];
temp[2] = data[1];
temp[3] = data[0];
return value;
}
long hexToCDAB(const QString &hexData) // 16进制转long CDAB,小端
{
bool ok;
char data[4];
data[0] = hexData.left(2).toInt(&ok, 16);
data[1] = hexData.mid(2, 2).toInt(&ok, 16);
data[2] = hexData.mid(4, 2).toInt(&ok, 16);
data[3] = hexData.right(2).toInt(&ok, 16);
long value = 0;
QByteArray bytedata;
bytedata.setRawData((char *)&value, 4);
char *temp = (char *)&value;
temp[0] = data[1];
temp[1] = data[0];
temp[2] = data[3];
temp[3] = data[2];
return value;
}
long hexToBADC(const QString &hexData)
{
bool ok;
char data[4];
data[0] = hexData.left(2).toInt(&ok, 16);
data[1] = hexData.mid(2, 2).toInt(&ok, 16);
data[2] = hexData.mid(4, 2).toInt(&ok, 16);
data[3] = hexData.right(2).toInt(&ok, 16);
long value = 0;
QByteArray bytedata;
bytedata.setRawData((char *)&value, 4);
char *temp = (char *)&value;
temp[0] = data[2];
temp[1] = data[3];
temp[2] = data[0];
temp[3] = data[1];
return value;
}
long hexToDCBA(const QString &hexData)
{
bool ok;
char data[4];
data[0] = hexData.left(2).toInt(&ok, 16);
data[1] = hexData.mid(2, 2).toInt(&ok, 16);
data[2] = hexData.mid(4, 2).toInt(&ok, 16);
data[3] = hexData.right(2).toInt(&ok, 16);
long value = 0;
QByteArray bytedata;
bytedata.setRawData((char *)&value, 4);
char *temp = (char *)&value;
temp[0] = data[0];
temp[1] = data[1];
temp[2] = data[2];
temp[3] = data[3];
return value;
}
int main(int argc, char *argv[])
{
long v1 = hexToABCD("6387fffd"); //输出1669857277
long v2 = hexToCDAB("6387fffd"); //输出-171129
return 0;
}
Qt中double与float与16进制字符串之间的转换
https://blog.csdn.net/SiriusWilliam/article/details/117483663
// float转16进制字符串
float f = 20.321;
uint f_uint = *(uint*)&f;
QString f_hex = QString("%1").arg(f_uint, 4, 16, QLatin1Char('0'));
// 4是生成字符串的最小长度,可以改为8
qDebug() << f_hex;
// "41a29168"
// 16进制字符串转float
QString hex_float = "41a29168";
uint hex_uint = hex_float.toUInt(nullptr, 16);
float hex_res = *(float*)&hex_uint;
qDebug() << hex_res;
// 20.321
// double转16进制字符串
double d = 20.321;
qulonglong d_long = *(qulonglong*)&d;
QString d_hex = QString("%1").arg(d_long, 8, 16, QLatin1Char('0'));
qDebug() << d_hex;
// "4034522d0e560419"
// 16进制字符串转double
QString hex_double = "4034522d0e560419";
qulonglong hex_long = hex_double.toULongLong(nullptr, 16);
double hex_d = *(double*)&hex_long;
qDebug() << hex_d;
// 20.321
C语言:十六进制(HEX)和浮点类型(float、double)转换
https://handsome-man.blog.csdn.net/article/details/107333529
最后
以上就是典雅樱桃为你收集整理的Qt进制转换,16进制转long ABCD/CDABQt进制转换,16进制转long ABCD/CDABQt中double与float与16进制字符串之间的转换C语言:十六进制(HEX)和浮点类型(float、double)转换的全部内容,希望文章能够帮你解决Qt进制转换,16进制转long ABCD/CDABQt进制转换,16进制转long ABCD/CDABQt中double与float与16进制字符串之间的转换C语言:十六进制(HEX)和浮点类型(float、double)转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复