- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我必须用不同的数据填充QByteArray
。所以我正在使用 QDataStream
。
QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);
qint8 dataHex= 0x04;
qint8 dataChar = 'V';
stream << dataHex<< dataChar;
qDebug() << buffer.toHex(); // "0456" This is what I want
但是,我还想将 QByteArray 附加到 buffer
。
QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);
qint8 dataHex= 0x04;
qint8 dataChar = 'V';
QByteArray moreData = QByteArray::fromHex("ff");
stream << dataHex<< dataChar << moreData.data(); // char * QByteArray::data ()
qDebug() << buffer.toHex(); // "045600000002ff00" I would like "0456ff"
我错过了什么?
最佳答案
当附加 char*
时,它假定 \0
终止并使用 writeBytes
序列化,这也首先写出大小(如 uint32)
Writes the length specifier len and the buffer s to the stream and returns a reference to the stream.
The len is serialized as a quint32, followed by len bytes from s. Note that the data is not encoded.
你可以使用writeRawData
来规避它:
stream << dataHex<< dataChar;
stream.writeRawData(moreData.data(), moreDate.size());
关于c++ - 将 QByteArray 附加到 QDataStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23271029/
我正在使用 QMap RegTable; (Seprate Class Variable) 用于存储 Modbus 寄存器地址和从串口接收到的数据。一切正常,从串口读取数据并正确填充到 QByteA
假设我们有一个功能商店 void store(const QByteArray& data); 此函数的工作是获取数据 并将其存储起来。不幸的是,如果参数是用 QByteArray::fromRawD
我有一个非常简单的加密/解密程序。加密后,我的程序将加密文本作为 QByteArray 返回,然后我将其保存到文本文件中。从文件中检索 ByteArray 进行解密时,我不确定它的格式是否正确,或者文
请帮助进行这些转换。这是输入; QByteArray byteArr; QBitArray bitArr; QFile file(adress); byteArr.readAll(file); 从字节
检查 QByteArray 的大小总是返回 4 个字节,我假设是由于 Qt 中隐式共享数据: int n = 50; //or n = 100, 200 QByteArray arr(n,'a');
我需要编写一个函数来获取 optional 的所有权的底层数组。 在Rust中,是这样实现的: fn my_func(f: &mut Option>) -> Box { //how to d
我想创建 SerialPort 类,它可以自动接收消息,然后发出信号。 但是当我编译它时显示错误信息: error: 'QObject' is an ambiguous base of 'Serial
正如您可能从标题中发现的那样,我在转换 QByteArray 时遇到了问题。为整数。 QByteArray buffer = server->read(8192); QByteArray q_si
我目前在使用 QSerialPort 时遇到了一些问题:当我使用一个示例中的函数时,它看起来像 QKeyEvent *e; emit getData(e->text().toLocal8Bit());
我有一个像这样的自定义结构: struct aReminderStruct{ QString name; QDate date; QTime time; QString
我正在使用 Qt 和 C++。我必须管理电子板的错误代码。我可以以必须将其转换为 QVariant 的 QByteArray 的形式获取这些错误。我没有找到任何实用的方法来做到这一点(所以如果你有一个
使用 QByteArray QIODevice::readAll()从 QT5 开始,我能够从 txt 文件或图像制作字节数组,之后使用解码并正确地重新创建文件。但是,当我尝试使用 .db 文件 (S
我有一个文本编辑器,我在其中键入十六进制数字,然后将此文本转换为 QByteArray。 这是我的代码: QByteArray parsedValue = QByteArray::fromHex(ex
尝试编写一个非常简单的 Qt 程序(因为这就是我的全部能力!)... ...我已将一个相当小的二进制文件读入 QbyteArray,我可以看到 QByteArray 正确地保存了该数据。我想将一个指向
我有以下代码需要从纯 C++ 转换为 qt: // txMessage and UserData are char arrays memcpy(&txMessage[18], UserData, 8)
我想在 Qt 中将数组转换为 QByteArray。有人可以解释这个概念吗?请举例说明。 最佳答案 QByteArray 有一个 constructor就是这样做的。 这是如何使用它: const c
为什么声明: QByteArray data (initialized somehow); if(data.at(0) == 0xFF) do_something(); 发出这样的警告:由于数据类型
从 QByteArray 开始,我想在我的 QByteArray 中搜索“\n”字符,并将所有字符从头到“\n”连接起来,并将它们保存在 QString 中;之后,我将传递到下一个“\n”之前的以下字
我需要转换一个 QString 这是 已经以十六进制格式转换为 QByteArray。例如: QString a = "AF5603B4" 应存储在 QByteArray 中: QByteArray
在我的程序中,我经常使用串行通信,所以 QByteArray经常使用。 我想知道是否有更短的方法来初始化 QByteArray具有特定字节比: const char test_data[] = {
我是一名优秀的程序员,十分优秀!