将unsigned char [10]转换为QBytearray;

时间:2013-03-11 11:13:54

标签: c++ qt converter unsigned-char qbytearray

我已经看到了很多关于这方面的问题,但到目前为止没有人对我有用。

我已经尝试了两个最常见的答案,但我得到了同样的错误。

只是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]

任何建议?

谢谢

2 个答案:

答案 0 :(得分:8)

这只是签名问题,所以这应该有效:

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

或者使用传统的C风格演员:

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

Here's one of many many discussions about which you should use.

更简单的替代方法是从unsigned的声明中删除buf,如果由于某些其他原因您不需要fromRawData

请注意,如果您使用buf方法,则不会复制字节,因此请确保{{1}}不会过早超出范围。如果不确定,请不要使用它......

答案 1 :(得分:1)

正如它所说,传递给fromRawData的论点应该是const char*,而不是unsigned char*。您可以将数组设为const char

的数组
const char buf[10];

可以将数组转换为指向其第一个元素的指针,该元素将const char*显示为fromRawData所期待的。