qt 结构体转为char*放到qbytearray后多了以为00 是什么原因
时间: 2023-12-26 14:06:00 浏览: 141
QT通过Tcp发送接收自定义结构体
这种情况可能是由于 Qt 在将结构体转换为 QByteArray 时使用了结构体的字节数,而不是结构体中实际使用的字节数。这样做可能会导致在 QByteArray 中添加了额外的字节,这些字节的值为 0x00。
为了避免这种情况,您可以使用 QByteArray 的 resize() 函数将其大小调整为结构体中实际使用的字节数。例如,假设您有一个名为 myStruct 的结构体,并且您希望将其转换为 QByteArray:
```cpp
myStruct s;
// 填充结构体 s 中的数据
QByteArray byteArray((const char*)&s, sizeof(s));
byteArray.resize(sizeof(myStruct));
// 现在 byteArray 的大小应该与 myStruct 中实际使用的字节数相同
```
通过这种方式,您可以确保 QByteArray 中不会包含额外的字节。
阅读全文