问题标签 [qbytearray]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Qt quint32 Little-Endianness with QDataStream
I'm using QDatastream to populate a quint32 array from a QByteArray on an Little-Endian ARM machine like below:
The problem is with byte order. I need to grab the last 4 bits of the 32bit field in headerBuffer[113], so I tried to AND that entry in headerBuffer with 0xf. The expected value to check against this field is "3". However, this AND operation gives me "a", as shown below. If I swap the bytes so that the entry is "0x1a13 & 0x000f", then I get "3". You can see below a few other examples of the values that are expected, versus what I am seeing. So, I am setting the ByteOrder of the QDataStream to LittleEndian, but still not getting the desired results. What am I doing wrong? How can I get 0x1a13 instead of 0x131a? Thanks!
c++ - 最佳实践:如何解释/处理 QDataStream?
我需要处理由另一个非 Qt 程序创建的定义结构的流式二进制数据 (QDataStream)。我想知道解释这些数据的最佳做法是什么。假设数据在电报中是结构化的(提供了结构定义),如下所示,不能由我自己更改:
4字节头| 2字节序号| 1 字节校验和 | 10字节数据
我看到以下在“电报”类中处理数据的可能性:
- Telegram 类有一个私有的 QByteArray 成员变量。使用 readRawData 方法一次从流中读取所有数据(17 个字节)并将其存储在其中。变量是用公共方法访问和解释的,比如
return (array.at(4)<<8) + array.at(5)
序列号,不是很优雅。 - Telegram 类有一个与结构联合的公共 char[17] 成员变量。使用 readRawData 从流中读取所有数据并存储在其中。之后访问变量时,这仅在结构上完成,就像
telegramstruct.squenceNumber
我看到这种方法的潜在问题一样,如字节序和填充。 - Telegram 类对于每个电报字段都有私有成员变量,例如
QString strHeader
. 从流中读取电报时,数据直接存储在这些变量中。对于基本类型,使用 readRawData 或 operator>> 完成读取。
代码应该尽可能快,因为要处理大量数据。我在带有 MinGW 的 Windows 上使用 Qt 5.0.1。
我的问题:
- 上述解决方案中哪一个是最佳实践和快速,还是有更好的方法?
- 像在 1 中一样一次读取是否比在 3 中读取 4 字节、2 字节、1 字节……更快?
- 使用 1 和 3,我不能使用提供的具有已定义结构的头文件,这是不好的做法吗?
- 是否有可能与 QByteArray 和结构建立某种“联合”?
- 如何使用解决方案 3 轻松计算校验和?
非常感谢您的意见和提示。
克里斯
qt - QBitArray 大小在尝试用流运算符填充后保持为零
为什么 QBitArray 的大小保持为零?我正在使用 Qt 5.0.2。
qt - 序列化 QFileInfo
我有一个文件列表,我想序列化每个文件的文件信息并通过套接字发送。
我看到可以像这样进行序列化,例如:
但我找不到对QFileInfo
. 是否可以序列化这种Qt
数据类型?有什么方法可以轻松实现这种类型的完整序列化,或者我只需要将数据分解为原始单元?
c++ - QT5 C++ QByteArray XML 解析器
我得到以下xml
通过一个将其保存在名为 Data 的 QByteArray 中的套接字。
我想从 xml 中提取每个值并将其保存到不同的变量中(有些是整数,有些是 QString)。
我的主要问题是我不知道如何区分 xml 字符串,比如<D>125</D>
标签之间的值和 xml 字符串,比如<Te T210="10.00" T29="9... />
标签字符串本身的值。
到目前为止,我的代码如下所示:
c++ - QByteArray 删除前 4 行
我有 QByteArray 并且需要删除前 4 行。例如,我可以使用正则表达式来做到这一点,但这是更简单的方法吗?
UPD:我的 QByteArray 中的第一行(超过 4 行)是文本,最后是 '\n'。
qt - Qt:在文件中的某个位置插入 QByteArray
是否可以QByteArray
在文件中的某个位置插入a?例如,如果我有一个已经有 100KB 数据的文件,是否可以QByteArray
在位置 20 处插入一个示例?之后要构建的文件是从 0KB 到 20KB 的数据序列,然后是QByteArray
,然后是从 20KB 到 100KB 的数据序列。
c++ - QByteArray 作为 blob 数据部分插入 sqlite3 (c++)
我正在尝试插入我下载的图像数据QNetworkAccessManager
as QByteArray
。我正在尝试将其插入QByteArray
为 BLOB。我的表创建查询是
我像这样创建了插入查询,
但是当我打印它显示的查询时,
看到 BLOB 数据只有 4 长。并且有一些奇怪的值。包含的屏幕截图*imageData
是,
图片长256*256*4。它是一个 jpeg 图像。
编辑:我遵循 CL 的代码,现在 IMAGE_DATA 列有一些钻石形状的字符。图片如下。
c++ - 5 字节 QByteArray 的内存占用。5 字节的 quint64 或 QByteArray 存储效率更高吗?
检查 QByteArray 的大小总是返回 4 个字节,我假设由于 Qt 中隐式共享数据:
总是打印 4
如何估计 QByteArray 的实际内存占用?这个问题的动机是有效地存储大量 5 字节标识符 - 它们可以分别存储为 quint64 (每个使用 8 个字节,因此浪费了 3 个字节),或者每个作为 QByteArray - 但我不知道如何在后一种情况下估计开销....
我想使用这些标识符作为 QMap 的键,所以它们都应该有自己的结构——一个长的 QByteArray 不起作用......
qt - QByteArray 与 unsigned char* 速度
我想知道 QByteArray 和 unsigned char* 在速度上有什么区别吗?我的程序中有很多字节数组和复制操作,所以知道是否有任何区别对我来说很重要。谢谢