QString,uint_8,char*,QByteArray,这几者之间的相互转换
时间: 2023-12-14 20:36:25 浏览: 82
可以使用以下函数进行相互转换:
1. QString 转 uint_8:
```
QString str = "123";
uint_8 num = str.toUInt();
```
2. uint_8 转 QString:
```
uint_8 num = 123;
QString str = QString::number(num);
```
3. char* 转 QByteArray:
```
char* data = "hello world";
QByteArray arr(data);
```
4. QByteArray 转 char*:
```
QByteArray arr("hello world");
char* data = arr.data();
```
相关问题
uint16_t value = 0x1234; // 待转换的uint16_t值 QByteArray bytes(reinterpret_cast<const char*>(&value), sizeof(value)); // 将uint16_t转换成QByteArray bytes.swap(0, 1); // 交换高低位 QString str(bytes); // 将QByteArray转换成QString的输出是什么?
如果使用上述代码进行高低位转换并将QByteArray转换成QString,则输出的字符串为:"4\003"。
这是因为在高低位交换之后,value的值变为了0x3412,对应的ASCII码为0x34和0x12,而QString的构造函数将QByteArray中的数据解释为一个以'\0'结尾的字符串,因此输出的字符串为"4\003",其中'\003'表示ASCII码为0x03的控制字符。
Qt将uint_8*转换成char *
可以使用QString::fromUtf8()函数将uint_8*转换为QString类型,然后通过QString的toUtf8()函数将其转换为char*类型。示例代码如下:
``` c++
uint8_t* data = ...; // 假设data为uint8_t类型的数据指针
QString str = QString::fromUtf8(reinterpret_cast<const char*>(data));
char* charData = str.toUtf8().data();
```
其中,reinterpret_cast<const char*>(data)将uint8_t*类型的数据指针转换为const char*类型,然后通过QString::fromUtf8()函数将其转换为QString类型;最后,通过QString的toUtf8()函数将QString类型转换为QByteArray类型,再通过QByteArray的data()函数得到char*类型的数据指针。
阅读全文