问题标签 [qdatastream]
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++ - 使用 QDataStream 将 QImage 转换为 QByteArray
我试图将从 ScreenShot 制作的 QImage 转换为 QByteArray 以通过 QTCPSocket 发送。当我将 QImage 转换为 QByteArray 并在发送之前我尝试反序列化并在标签上显示它不能!我的错误是什么?谢谢帮忙。
从 ScreenShot 制作的 sampleQImage:
c++ - QDataStream 读取到 QVector
我有一个QByteArray
包含代表两个浮点数的 8 位,读取QDataStream
到的正确和最简单的方法是QVector<float>
什么?
代码:
上面的代码给出:
STD:: 内存位置的 bad_alloc"
我已经阅读了相关的问题,但我无法正确理解它们以在我的情况下实施它。
以下是我目前的解决方案,但我认为它过于复杂,有一种更简单的方法可以做到这一点:
c++ - QDataStream 读取和写入的字节数比 QFile::length() 报告的要多
我有一个实用程序应该将文件从一个位置复制到另一个位置。
我遇到的问题是当使用QDataStream读取 X 字节并写入它时,正在读取/写入的字节数超过了文件的字节数。我看到这个问题发生在许多文件上。
我正在使用QDataStream::readRawData()和QDataStream::writeRawData()来促进读取/写入文件,如下所示
这个问题并不一致,但它时不时发生,我不知道为什么。有人对可能的原因有想法吗?
qt - 在 Qt 中使用 QUdpSocket 将 Union 转换为 QByteArray,反之亦然
我有一个像下面这样的联盟
我想将myData
union 转换为 aQByteArray
以便我可以使用QUdpSocket
using writeDatagram()
函数通过套接字发送它。所以首先告诉我如何将其转换为QByteArray
.
接下来的事情是,在接收方我怎样才能再次转换QByteArray
成这个联盟myData
。
utf-8 - QDataStream readQString() 如何读取 utf8 字符串
我正在尝试从使用 Qt 的 QDataStream 方法对数据进行编码的应用程序中解码 UDP 数据包数据,但在尝试解码字符串字段时遇到问题。文档说数据是用 utf8 编码的。python QDataStream 模块只有一个 readQString() 方法。数字似乎可以很好地解码,但是当第一个字符串解码不正确时,流指针会变得混乱。
如何解码这些 UTF8 字符串?
我正在使用源项目中的一些文档解释编码:wsjtx-2.2.2.tgz NetworkMessage.hpp 头文件中的描述
例如,有一条状态消息带有这样的评论:
收到状态消息时来自套接字的示例数据:
b'\xad\xbc\xcb\xda\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x06WSJT-X\x00\x00\x00\x03\x00\x00\x00 \x052.1.0\x00\x00\x00\x0624fcd1'
python - 在 PyQt >> Qt-C++ 之间使用 QDataStream 序列化/反序列化 QVariantMap
我可以通过 PyQt5 中的 QDataStream 成功序列化/反序列化 QVariantMap
Python :
这完全可以反序列化:
我可以在钥匙上拿到所有物品。
但我无法从 C++ 中得到它。
如何从 c++ 获取此 QDataStream (QVariantMap) ?
vmat_x 始终为空
任何想法 ?
编辑:
消息是来自 Python xox 的 QBytearray
c++ - 无法在没有命名空间冲突的情况下定义友元函数
我创建了一个类(MyNodeClass),现在想要添加序列化功能。我声明(在 mynodeclass.h 中)我的序列化方法如下:
我的定义(在 mynodeclass.cpp 中)是:
编译器抱怨我的 operator<< 无法访问 NS::MyNodeClass 的私有成员。这意味着签名没有排队。我已经尝试了命名空间相关更改的所有组合,但无法弄清楚。我在这篇文章之后建模了我的代码
应该如何定义友元函数,以便不会抱怨命名空间或访问私有成员?(请注意,我能找到的所有示例都使用单个文件,因此拆分为 .h 和 .cpp 是需要解决的问题的一部分)
c++ - 通过 QDataStream 转换 littleEndian
我想通过网络发送一些整数(int32_t)。
为此,我首先转换整数并发送它们。
然后 Qt 应该完成这项工作,所以我尝试了 QDataStream 转换,但失败了,值 > 128 为负数。所以目前我做了这样的转换:
转换这些整数的最佳方法是什么,for 循环对我来说似乎不是最优的。
谢谢
qt - QBtyeArray QDataStream qCompress 到文件添加额外的前导字节
Qt/C++ 程序具有将对象数据 ( _token
) 写入文件的函数,如下所示:
_token 是以下内容的一个实例struct
:
当文件被保存时,它在开始时有 4 个额外的字节,这会将文件呈现为无效的 zlib 文件。
我们可以看到上面的 5-6 字节9C 78
是 zlib 签名,但在这些之前的 4 字节是问题所在。
要检查压缩数据是否正确,我执行以下操作:
dd if=file.token bs=1 skip=4 | openssl zlib -d
这会产生预期的结果(用于测试)。
问题在于应用程序将这些数据读回数据对象:
这将返回 null - 因为前导 4 个无关字节。我可以输入一些代码来跳过这 4 个前导字节,但我怎么知道它总是 4 个字节?我想肯定的是文件数据都是 zlib 压缩的。
我的问题是如何避免首先保存这些字节,以便在重新读取时已知格式为 zlib 类型?
python - 将 QDataStream 对象传递给另一个方法(复制构造函数与有状态)
在实现通用拖放模型时,我遇到了以下问题。在对mimeData进行编码时,我想将拖动索引的原始行和列写入数据流。项目数据的序列化取决于程序员选择的特定数据结构,因此应该封装在单独的方法中。DragDropListModel 的子类对其模型项使用不同的数据结构只需覆盖此封装方法。
问题是 QDataStream 上的读/写是有状态的。例如,请看一下 decode_data()。将 QDataStream 对象传递给负责从流中解码下一项的方法,(可能)调用复制构造函数。现在 decode_item_from_stream() 使用数据流的副本。在反序列化过程中完成的读取改变了复制的数据流对象的状态,但 decode_data() 中原始对象的状态保持不变。这应该会导致 while 循环的下一次迭代崩溃。
因此我的两个问题是:
我的描述是准确的还是我误解了什么?
python 是否有一种方法可以规避这些问题(其他语言可能通过引用传递来解决这个问题),同时保持方法彼此分开?