将unsigned char[10]转换为QBytearray;

Convert unsigned char[10] to QBytearray;

本文关键字:转换 QBytearray unsigned char      更新时间:2023-10-16

我看过很多关于这个的问题,但到目前为止没有一个适合我。

我试过两个最常见的答案,但我得到同样的错误。

只是一个unsigned char buf[10];

,

QByteArray databuf;
databuf = QByteArray::fromRawData(buf, 10); 

QByteArray databuf;
databuf = QByteArray(buf, 10);

给了我同样的错误,

error: invalid conversion from 'unsigned char*' to 'const char*' [-fpermissive]

任何建议吗?

谢谢

这只是签名问题,所以这应该可以工作:

databuf = QByteArray(reinterpret_cast<char*>(buf), 10);

或使用遗留的c风格强制转换:

databuf = QByteArray((char*)buf, 10);

(这是关于你应该使用哪个的众多讨论之一)

更容易的选择是从buf的声明中删除unsigned,如果你不需要它的一些其他原因。

注意,如果使用fromRawData方法,它不会复制字节,所以最好确保buf不会很快超出作用域。

正如上面所说,传递给fromRawData的参数应该是const char*,而不是unsigned char*。您可以将您的数组设置为const char:

的数组。
const char buf[10];

数组可以转换为指向其第一个元素的指针,该元素将指向const char*,正如fromRawData所期望的那样。