我的程序经常涉及串行通信,因此经常使用QByteArray
。
我在想是否有比以下更短的方法来初始化一个带有特定字节的QByteArray
:
const char test_data[] = {
static_cast<char>(0xB1), static_cast<char>(0xB2),
0x5, static_cast<char>(0xFF),
static_cast<char>(0xEE), static_cast<char>(0xEE),
static_cast<char>(0x0)}; // Note QByteArray should be able to hold 0 byte
const QCanBusFrame frame = QCanBusFrame(0xA1, QByteArray(test_data));
由于范围0x7F到0xFF比char
所能容纳的范围更大,因此C++11会出现缩小错误,因此需要使用static_cast<char>
,但是QByteArray
构造函数要求传入char
。
这是被使用的QByteArray
构造函数:
QByteArray::QByteArray(const char *data, int size = -1)
test_data
的那一行会抛出“从'int'到'const unsigned char*'的无效转换”错误。 - DBedrenkoQByteArray
。 - Garf365