如何在不将其转换为 ASCII 字符的情况下显示 QByteArray 的十六进制值
How can hex values of a QByteArray be shown without them being converted to ASCII characters
我有一个简短的程序,它从串行端口读取数据并将其存储在QByteArray中。当我使用 qDebug(( 显示数组的内容时,一些十六进制值按预期显示,例如。0xB5保持0xB5,但其他更改为 ASCII,例如。0x62变成 b。
以下是我用来读取数据并使用 qDebug 显示数据的代码:
void MainWindow::readSerial()
{
QByteArray serialData = port->readAll();
qDebug() << "SerialData: " <<serialData;
}
程序输出以下内容:
串行数据: "\xB5"b\x0B\x01"0\x00:\x16Q\x1E
但我希望它输出如下内容:
串行数据: \xB5\62\x0B......
我的问题是:
qDebug 是否会自动将某些十六进制值转换为 ASCII
如果是这样,有没有办法阻止它这样做
QByteArray 是否准确存储数据,或者问题是否在 我存储数据的方式
感谢您的帮助。 问候
使用QByteArray::toHex()
。
void MainWindow::readSerial()
{
QByteArray serialData = port->readAll();
qDebug() << "SerialData: " << serialData.toHex(':');
}
串行数据: B5:62:0B
1( QDebug 始终将数据显示为可打印字符。
2( 您可以使用QTextStream
运算符来操纵输出。不过,在这种情况下无济于事。冗长而复杂的答案在代码中(这是QDebug
最终用于QByteArray
打印的地方(。
3(是的,它完全按照给定的方式存储数据。
相关文章:
- 在这种情况下,我真的复制了字节还是复制了字符?
- 在不使用字符串库的情况下输入字符*
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 如何在不将其转换为 ASCII 字符的情况下显示 QByteArray 的十六进制值
- 整数指针与字符指针的情况下悬空指针
- 有没有办法在不使用任何迭代的情况下将字符的字母顺序排列
- 如何在没有wchar_t的情况下在 c++ 中解码/编码 UTF-8 字符
- 给定一个填充无符号字符**的 C 函数,如何在没有中间副本的情况下用数据填充 std::vector
- 为什么在指针和数组的情况下,字符数组的处理方式不同
- 是否可以超载[]运算符在不定义类的情况下访问特定的字符
- 如何在不定义目标变量大小的情况下逐个字符将字符串变量复制到另一个字符
- 如何在不使用循环的情况下将低字节和高字节的字符数组转换为它们的整数数组
- C++ 在不使用 C 字符串库函数的情况下替换数组中的字符
- 我可以在不复制的情况下将 std::vector 重新解释<char>为 std::vector<无符号字符>吗?
- 如何在不删除任何字符的情况下将字符从字符串中的某个位置移动到其最前面
- 在不使用字符串函数的情况下复制C 中的字符数组
- 在没有字符串或字符帮助的情况下查找数字的反面(例如:2500 reverse 0025)
- 有没有办法在不分配变量的情况下将字符串连接到数字
- 在不使用c++中的库函数的情况下,计算不包括null字符的字符串长度
- 在没有ICU或boost的情况下规范化C++中的unicode字符