将unsigned char [10]转换为QBytearray;

Sam*_*NLP 5 c++ qt converter unsigned-char qbytearray

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

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

只是一个 unsigned char buf[10];

这个,

QByteArray databuf;
databuf = QByteArray::fromRawData(buf, 10); 
Run Code Online (Sandbox Code Playgroud)

或这个,

QByteArray databuf;
databuf = QByteArray(buf, 10);
Run Code Online (Sandbox Code Playgroud)

给我同样的错误,

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

任何建议?

谢谢

hyd*_*yde 9

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

databuf = QByteArray(reinterpret_cast<char*>(buf), 10);
Run Code Online (Sandbox Code Playgroud)

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

databuf = QByteArray((char*)buf, 10);
Run Code Online (Sandbox Code Playgroud)

(这是您应该使用的许多讨论之一.)

更容易的替代方法是unsigned从声明中删除buf,如果由于某些其他原因你不需要它.

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