Qt笔记(十二)之十进制 二进制 十六进制转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt笔记(十二)之十进制 二进制 十六进制转换相关的知识,希望对你有一定的参考价值。
参考技术A 一.16进制字符串转10进制QString str ="FF";
bool k;
int dec = str.toInt(&k,16);
if(k)
qDebug()<<"转换成功:"<<dec; // 255
else
qDebug()<<"转换失败";
二.10进制转16进制字符串
int oDec=125;
QString hex1=QString::number(oDec,16);
qDebug()<<hex1; // 7d
三.10进制转二进制
int dec1=15;
qDebug()<<QString::number(dec1,2); // 1111
四.备注:
其他进制的转换,可以先转为10进制,以10进制数为媒介进行转换
Qt 学习笔记 4. QByteArray
1. hex
概念
在
Qt
中,hex
是指 十六进制数 的表示形式。
可以使用
QString
对象的toLocal8Bit()
方法将hex
字符串 转换为QByteArray
类型的 二进制数据,
并可以使用QByteArray
对象的toHex()
方法将 二进制数据 转换回hex
字符串。
这些方法通常用于处理 图像 和 音频 文件,以及进行 数字签名 等操作。
以下是一个简单的示例代码:
QByteArray byte_array = 0x12, 0x34, 0x56, 0x78;
QString hex_data = byte_array.toHex(); // 将二进制数据转换为hex字符串
QByteArray decoded_data = QByteArray::fromHex(hex_data.toLocal8Bit()); // 将hex字符串转换为二进制数据
qDebug() << hex_data; // 输出:12345678
qDebug() << decoded_data; // 输出:"\\x12\\x34\\x56\\x78"
在以上实例中,首先创建了一个
QByteArray
对象,其中保存了四个字节的二进制数据。
然后,使用QByteArray
对象的toHex()
方法将其转换为hex
字符串,并设置其为QString
对象。
接着,使用QString
对象的toLocal8Bit()
方法将hex
字符串转换为QByteArray
类型的二进制数据,并使用fromHex()
方法将其还原为原始的二进制数据。
最终,使用qDebug()
函数分别输出了二进制数据 转换后 的hex
字符串和 还原后 的二进制数据。
需要注意的是,虽然
hex
字符串使用十六进制数字来表示数据,但是它们的实际大小和原始的二进制数据大小是不同的。
在将hex
字符串转换回原始的二进制数据时,需要确保使用正确的 编码格式,否则可能会导致解码出错。
2.一些常用于处理 hex
数据的函数
在
Qt
中,可以使用hex
字符串来表示 二进制数据,hex
字符串 可以通过QByteArray
对象的toHex()
方法生成,也可以通过QByteArray
对象的fromHex()
方法将hex
字符串 转换为 二进制数据。
以下是一些常用于处理
hex
数据的函数:
QByteArray QByteArray::toHex() const
该函数将当前
QByteArray
对象中的 二进制数据 转换为hex
字符串,并返回该字符串。
默认情况下,各个字节之间不会添加分隔符,例如"0123456789ABCDEF"。
QByteArray QByteArray::fromHex(const QByteArray &hexEncoded)
该函数将给定的
hex
字符串 转换为 二进制数据,并返回一个新的QByteArray
对象。
hexEncoded
参数指定要转换的hex
字符串。
bool QByteArray::fromHex(const char *hexEncoded, int len)
该函数将给定长度的
hex
字符串 转换为 二进制数据,并直接写入当前QByteArray
对象的数据中。
hexEncoded
参数指定要转换的hex
字符串,len
指定hex
字符串的长度。
如果转换成功,函数返回true
,否则返回false
。
QByteArray QByteArray::fromHex(const QString &hexEncoded)
该函数类似于
QByteArray::fromHex(const QByteArray& hexEncoded)
,但是可以直接使用QString
类型的hex
字符串作为输入。
在使用
hex
字符串 表示 二进制数据 时,通常需要注意以下几点:
- 各个字节之间的分隔符:
QByteArray::toHex()
方法生成的hex
字符串通常 没有 分隔符,使用时需要根据需要手动添加。
例如,可以使用
QString::split()
方法将hex
字符串分为每两个字符一组,并使用QString::join()
方法在每组之间添加空格或其他字符。
- 字节顺序:在网络传输和存储过程中,字节顺序可能会被改变。
Qt
提供了一些函数来处理 字节序转换,例如qFromLittleEndian()
、qFromBigEndian()
、qToLittleEndian()
、qToBigEndian()
等。
- 编码格式:
QByteArray::fromHex()
方法可以 解析 多种编码格式的hex
字符串,例如UTF-8
、Latin-1
等。
在使用该函数时,需要确保使用正确的编码格式。
总之,在使用
hex
字符串表示二进制数据时,需要小心处理各种细节问题,以免出现错误。
以上是关于Qt笔记(十二)之十进制 二进制 十六进制转换的主要内容,如果未能解决你的问题,请参考以下文章