比如我要转换以下QByteArray:"\x01\x03\x04\x00\x02\x00\x03\x1B\xF2",使用刚刚的构造函数却得到"\u0001\u0003\u0004",这是什么情况
时间: 2023-07-24 18:13:54 浏览: 168
QByteArray详解 - ecourse的专栏 - CSDN博客1
当您将`\x01\x03\x04\x00\x02\x00\x03\x1B\xF2`的字节数组转换为QString时,会遇到一些特殊情况。`\x01`、`\x03`和`\x04`是ASCII控制字符,而不是可打印字符。因此,当您使用QString的构造函数将字节数组转换为QString时,它会将这些控制字符转换为Unicode转义序列(例如`\u0001`、`\u0003`和`\u0004`)。
如果您想将字节数组中的原始数据显示为字符串,而不是将控制字符转换为转义序列,您可以尝试使用QString的fromRawData()函数。以下是示例代码:
```cpp
QByteArray byteArray("\x01\x03\x04\x00\x02\x00\x03\x1B\xF2", 9);
QString string = QString::fromRawData(byteArray.data(), byteArray.size());
QLineEdit *lineEdit = new QLineEdit();
lineEdit->setText(string);
```
使用fromRawData()函数,将原始字节数组数据作为参数传递给它,然后将其转换为QString并在QLineEdit上显示。这样,您将能够正确显示字节数组中的原始数据。
阅读全文