QByteArray 的十六进制值如何在不转换为 ASCII 字符的情况下显示
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;
}
程序输出如下:
SerialData: "\xB5""b\x0B\x01""0\x00:\x16Q\x1E
但我希望它输出如下内容:
SerialData: \xB5\x0B......
我的问题是:
qDebug 是否自动将一些十六进制值转换为 ASCII
如果是这样,有没有办法阻止它这样做
QByteArray 存储数据是否准确或者问题出在
我存储数据的方式
感谢您的帮助。
此致
void MainWindow::readSerial()
{
QByteArray serialData = port->readAll();
qDebug() << "SerialData: " << serialData.toHex(':');
}
SerialData: B5:62:0B
1) QDebug 始终将数据显示为可打印字符。
2) 您可以使用 QTextStream
operators. It will not help in this case though. Long and complicated answer is in the code 稍微操纵输出(这是 QDebug
最终结束 QByteArray
打印的地方)。
3) 是的,它完全按照给定的方式存储数据。
我有一个小程序可以从串行端口读取数据并将其存储在QByteArray 中。当我使用 qDebug() 显示数组的内容时,一些十六进制值按预期显示,例如。 0xB5 保留为 0xB5,但其他更改为 ASCII,例如。 0x62 变成 b.
这是我用来读取数据并使用 qDebug 显示它的代码:
void MainWindow::readSerial()
{
QByteArray serialData = port->readAll();
qDebug() << "SerialData: " <<serialData;
}
程序输出如下:
SerialData: "\xB5""b\x0B\x01""0\x00:\x16Q\x1E
但我希望它输出如下内容:
SerialData: \xB5\x0B......
我的问题是:
qDebug 是否自动将一些十六进制值转换为 ASCII
如果是这样,有没有办法阻止它这样做
QByteArray 存储数据是否准确或者问题出在 我存储数据的方式
感谢您的帮助。 此致
void MainWindow::readSerial()
{
QByteArray serialData = port->readAll();
qDebug() << "SerialData: " << serialData.toHex(':');
}
SerialData: B5:62:0B
1) QDebug 始终将数据显示为可打印字符。
2) 您可以使用 QTextStream
operators. It will not help in this case though. Long and complicated answer is in the code 稍微操纵输出(这是 QDebug
最终结束 QByteArray
打印的地方)。
3) 是的,它完全按照给定的方式存储数据。