我已经看到了很多关于这方面的问题,但到目前为止没有人对我有用。
我已经尝试了两个最常见的答案,但我得到了同样的错误。
只是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]
任何建议?
谢谢
答案 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
所期待的。