qt - 如何将 QByteArray 转换为十六进制字符串?

标签 qt qt5

我有吹 QByteArray。

QByteArray ba;
ba[0] = 0x01;
ba[1] = 0x10;
ba[2] = 0x00;
ba[3] = 0x07;

我真的不知道如何将此 QByteArray 转换为具有“ 01100007 ”的结果字符串,我将使用 QRegExp 对该字符串进行模式匹配?

最佳答案

首先,QByteArray不包含“十六进制值”,它包含字节(顾名思义)。数字只有在打印为文本时才能为“十六进制”。

你的代码应该是:

QByteArray ba(4, 0); // array length 4, filled with 0
ba[0] = 0x01;
ba[1] = 0x10;
ba[2] = 0x00;
ba[3] = 0x07;

无论如何,要转换一个 QByteArray对于十六进制字符串,你很幸运:只需使用 QByteArray::toHex() 方法!
QByteArray ba_as_hex_string = ba.toHex();

请注意,它返回 8 位文本,但您可以将其分配给 QString不用担心编码,因为它是纯 ASCII。如果你想在十六进制数字中使用大写 A-F 而不是默认的 a-f,你可以使用 QByteArray::toUpper() 转换大小写。

关于qt - 如何将 QByteArray 转换为十六进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36603001/

相关文章:

linux - 当从 Yocto SDK Build 安装时,QtCreator 认为 Qt5 QMake 安装无效

c++ - 如何在 Qt5 中设置线程的 CPU 亲和性?

qt - Qt5 和 Qt 4.8 中的模型和角色

python - QMenu 中的 QLabel

c++ - 我如何使用 QFtp::put 在 Qt C++ 中上传文件?

c++ - 访问 QSharedPointer 对象时出现段错误

c++ - 改变 QMenu 中子菜单的位置

python - PySide2 与 Pyinstaller : Failed to execute script pyi_rth_pkgres

c++ - Qt C++ QTouchEvent & TouchPoint 混淆

c++ - 根据正则表达式从 QT (C++) 中的 SQLite 数据库中检索记录