QByteArray 填充 \x....\x.... 到 QString

QByteArray filled with \x....\x.... to QString

我正在以下列方式通过 QByteArray 接收串行数据

QByteArray serialdata = testport->readAll();
qDebug() << serialdata;

qDebug 会溢出

...\x00T\xAAN\x82v\xA9k\x7F\xEE\xCEMf\x1C\xAA...

我知道这背后有 Strings/Chars,但完全不知道使用的是什么格式。我搜索了 Bing 和这个板,但没有找到任何线索。更让我困惑的是,这些片段的长度不同。有些是\x12,有些是\x123甚至是\x1234。

谁能告诉我这是什么编解码器或格式,以及我如何将其转换为 QString?

qDebug 格式化数组以便它可以安全地显示,即将显示格式转换为 C 字符串文字的格式,其中非 ASCII 可打印字符被转义并表示为十六进制八位字节。

\xab表示一个字节,值为a*16+b,其中ab为十六进制数。

\x1234 表示 {0x12, '3', '4'}.

\x00T\xAAN\x82v\xA9k\x7F\xEE\xCEMf\x1C\xAA 表示 {0x00, 'T', 0xAA, 'N', 0x82, 'v', 0xA9, 'k', 0x7F, 0xEE, 0xCE, 'M', 'f', 0x1C, 0xAA}。这是一个 "string" 但绝对不是任何自然人类语言中的字符串,或者至少不是任何常见编码中的字符串。

绝对不是 ASCII 字符串。看起来更像是线路噪声。很可能您没有在端口上设置通信设置以匹配您与之通信的设备的设置。