【问题标题】:Convert unsigned char[10] to QBytearray;将 unsigned char[10] 转换为 QBytearray;
【发布时间】:2013-02-26 13:07:06
【问题描述】:

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

我尝试了 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]

有什么建议吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    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.)

    更简单的替代方法是从 buf 的声明中删除 unsigned,如果您因为其他原因不需要它。

    请注意,如果您使用 fromRawData 方法,它不会复制字节,因此最好确保 buf 不会很快超出范围。如果不确定,请不要使用它...

    【讨论】:

    • 我需要它。我得到error: invalid static_cast from type 'unsigned char [10]' to type 'char*'
    • 我未经编辑的答案使用了static_cast,这是为什么它不起作用的链接问题:stackoverflow.com/questions/10151834/…
    【解决方案2】:

    正如它所说,传递给fromRawData 的参数应该是const char*,而不是unsigned char*。你可以让你的数组是const char的数组:

    const char buf[10];
    

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

    【讨论】:

    • 我是不是应该新建一个char *array,把buf的数据先传给数组再转换?
    猜你喜欢
    • 2014-02-19
    • 2011-10-19
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 2011-10-23
    相关资源
    最近更新 更多