2013-03-11 178 views
3

我已经看到很多关于这个的问题,但到目前为止没有为我工作。将unsigned char [10]转换为QBytearray;

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

是而是一个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]

有什么建议吗?

谢谢

回答

5

这只是符号性的问题,所以这应该工作:

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不会太早超出范围。如果不确定,请不要使用它...

+0

以及我需要它。我得到'错误:无效的static_cast从类型'无符号字符[10]'键入'字符*'' – SamuelNLP 2013-03-11 11:25:27

+0

@SamuelNLP编辑答案。 – hyde 2013-03-11 11:34:27

+0

我的未编辑的答案使用了'static_cast',这里是链接的问题,为什么它不起作用:http://stackoverflow.com/questions/10151834/why-cant-i-static-cast-between-char-and-unsigned-char – hyde 2013-03-11 11:41:53

1

,因为它说,传递给fromRawData的参数应该是一个const char*,不是unsigned char*。你可以让你的阵列是const char数组:

const char buf[10]; 

该阵列可以被转换成一个指向它的第一个元素当中,将会以const char*,exacly为fromRawData预期。

+0

我应该创建一个新的'char *数组'并将数据从'buf'首先传递给数组,然后将其转换? – SamuelNLP 2013-03-11 11:23:36

相关问题