在我的程序中,我经常使用串行通信,因此经常使用 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));
static_cast<char>
是必要的,因为否则 C++11 会给出关于缩小的错误,因为 0x7F 到 0xFF 的范围大于 char
可能适合 - 但是 char
是 QByteArray
构造函数所要求的。
这是正在使用的 QByteArray
构造函数:
QByteArray::QByteArray(const char *data, int size = -1)
原文由 DBedrenko 发布,翻译遵循 CC BY-SA 4.0 许可协议
受到上述答案的启发,我最终想到了:
在使用串行通信时,我更喜欢将字节作为字节数而不是文字字符。
在讨论了 ##c++ 之后,我被告知
reinterpret_cast
适用于这种情况。