遗留文件的 QVariantList 序列化

2024-01-24

我正在以旧的遗留文件格式(不是我们的)阅读。 很明显,这种文件格式是使用序列化编写的,因此为了让我的生活更轻松,我在阅读时也做了同样的事情。

在读取文件的某个时刻,一个段被识别为QMetaType::QVariantList https://doc.qt.io/qt-5/qmetatype.html.

随后的数据如下:

01 00 00 00 03 00 7e 00 00 00

(所有字节序列均采用小端序)

通过反序列化进入 QVariantList 确认01 00 00 00将列表中的项目数标识为 1。 进一步深入 QVariant 本身就可以看出我的问题; QVariant 使用 32 位整数无条件读取 QMetaType

So 03 00 7e 00变成了 8257539 的 QMetaType,这显然是错误的。

看起来,在过去,QVariant 的元类型可能已使用 16 位类型进行序列化,因为这样数据才有意义:

03 00变为 3 (QMetaType::Uint)
7e 00 00 00变成126

看看 QVariant 序列化的实现,我无能为力QDataStream::setVersion() https://doc.qt.io/qt-5/qdatastream.html#setVersion要么强制 Qt 将元类型读取为 16 位。

有人对我现在可以做什么有什么建议吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

遗留文件的 QVariantList 序列化 的相关文章

  • 如何通过 Qt 创建网络服务 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 另一个宏中的 Q_PROPERTY 宏

    如何放置Q PROPERTY另一个宏里面 辅助宏 define SimpleAllinOne member type public void Set member type arg member m member arg member ty
  • 如何将 QByteArray 转换为十六进制字符串?

    我有打击QByteArray QByteArray ba ba 0 0x01 ba 1 0x10 ba 2 0x00 ba 3 0x07 我真的不知道如何将此 QByteArray 转换为结果字符串 其中包含 01100007 我将使用 Q
  • 如何在 QT 中绘制点?

    我正在用 QT 用 C 编写一个应用程序 其中有 n 个点并计算它的凸包 然而 一旦计算出来 我不知道如何绘制点并绘制船体的边界 制作菜单按钮等很简单 但我不确定我是否知道执行此操作的工具 你怎么做到这一点 图形视图 addEllipse
  • Qt 人工鼠标点击无法正常工作

    小玩具应用程序可以在这里找到 http gist github com 517445 http gist github com 517445 我正在尝试将人工鼠标事件发送到小部件 我使用QApplication sendEvent为此 接下
  • 用 C++/Qt 编写的程序中的 RTF / doc / docx 文本提取

    我正在写一些程序Qt https en wikipedia org wiki Qt 28software 29 C 我需要从中读取文本微软Word https en wikipedia org wiki Microsoft Word RTF
  • 如何在 OS X 上的 Qt 应用程序中设置应用程序图标,足以进行分发?

    跟进这个答案 https stackoverflow com a 20918932 368896 to 这个问题 https stackoverflow com questions 20909341 what is the fastest
  • QStyledItemDelegate 绘制自定义小部件失败

    在我的一个项目中 我使用的是QTableWidget为了显示一些复杂的计算结果 为了提高表格的可读性 我需要在单个表格单元格内显示两个对齐的值 后来我想通过使用颜色或箭头等来进一步自定义小部件 为此我源自QStyledItemDelegat
  • 获取 QListView 中所有可见项目的简单方法

    我正在尝试使用 Qt Framework 开发一个图像库应用程序 应用程序从所选文件夹加载所有图像 并使用 QListView 控件显示这些图像 但现在我想通过仅加载用户可见的图像来减少内存消耗 由于没有直接函数来获取视图中的所有可见项目
  • Retina 显示屏中具有 QOpenGLWIdget 的 Qt MainWindow 显示错误大小

    我有一个 Qt 应用程序MainWindow 我嵌入一个QOpenGLWidget在里面 一切正常 直到我开始使用 Apple Retina 显示屏并在高 DPI 模式下运行我的应用程序 我的QOpenGLWidget只是它应该具有的大小的
  • 完全彻底卸载QT Creator

    问题 如何从 Linux 机器上卸载 QT Creator 我的 Debian Jessie 机器上的安装已损坏 我尝试过重新安装 修复等 但没有成功 建议我完全卸载 获取最新版本并重新安装 问题是我不确定如何执行此操作 每次我尝试时 QT
  • 如何在针对 Windows XP 的情况下使用 VS2012 构建 Qt 4/5?

    我正在尝试使用 Visual Studio 2012 构建 Qt 4 8 5 Qt 5 2 1 针对 Windows XP SDK v7 1a 使用 VS2102 编译时 源代码与 SDK v7 1a 存在各种不兼容性 因此无法开箱即用 这
  • Qt:不完整类型和前向声明的使用无效

    我有一些误解 A h ifndef A H define A H include B h class A public B Q OBJECT public A endif A cpp include A h A A B ui gt blan
  • PyQt4 QPalette 不工作

    btn QtGui QPushButton Button self palettes btn palette palettes setColor btn backgroundRole QtCore Qt green btn setPalet
  • Qt中用于线程间通信的类设计

    问题陈述 用相机跟踪物体并相应地移动相机的方位角和仰角 Process 相机获取物体的图像 处理相机的每一帧以查找物体 应该被跟踪 并将每帧中生成的信息传递给机械设备 万向节 以平移和倾斜方式移动摄像机 Design 主 Gui 在一个线程
  • Qt 5.1.1 与 Visual Studio 2012 - 这些 QT 版本无法访问

    打开 Visual Studio 时出现此错误 我安装自http qt project org downloads http qt project org downloads 适用于 Windows 64 位的 Qt 5 1 1 VS 20
  • 如何将自定义 Qt 类型与 QML 信号一起使用?

    我在 Qt 5 2 qml 应用程序中创建了一个自定义类型 class Setting public QObject Q OBJECT Q PROPERTY QString key READ key WRITE setKey Q PROPE
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • Q风格所有权

    在 Qt 应用程序中使用样式时 我遇到了一个有趣的问题QStyle所有权 QStyle继承自QObject 通常接受QObject parent作为构造函数参数来管理其子级的生命周期 但QStyle的构造函数没有此构造函数参数 第一个问题

随机推荐

  • 无法连接到“ssl://gateway.sandbox.push.apple.com:2195”

    我在我的MacBook Air中成功运行了APNS代码 但事实证明我无法在我的另一台计算机上运行它 我检查了一下这些是相同的 1 pem 文件 具体 2 程序 无法工作的计算机有 Windows 7 XAMPP 支持 OpenSSL 无防火
  • 在 PHP 中设置浮点数的精度

    我从数据库中获取一个号码 这个号码可能是float or int 我需要将数字的小数精度设置为3 这使得数字不长于 关于小数 5 020 or 1518845 756 使用PHP round number precision 我看到一个问题
  • JavaScript 性能长时间运行的任务

    前几天我注意到这里有一个问题 减少 Javascript CPU 使用率 https stackoverflow com questions 6846681 reducing javascript cpu usage 我很感兴趣 本质上 这
  • 运行需要 gensim 旧版本的模型

    我需要运行一个模型 但它需要具有 DocvecsArray 属性的旧版本 gensim 我该如何运行它 AttributeError 无法在 The DocvecsArray该类已被 2018 年 2 月发布的 Gensim 3 3 0 删
  • 在 JSF 2 / PrimeFaces 中使用正则表达式进行电子邮件验证

    我有一个输入字段 其中包含电子邮件地址
  • 调用未定义函数 Doctrine\ORM\Mapping\Driver\simplexml_load_file()

    我正在使用 Symfony2 并将我的网络部署到 CentOs6 服务器 我得到了这个异常 FatalErrorException Error Call to undefined function Doctrine ORM Mapping
  • 我是否可以使用 PLINQ 来提高效率?

    我正在尝试解决一个问题 即找到给定范围内的所有素数 且每个数字都是素数 例如在范围中 1 100 答案是8因为2 3 5 7 23 37 53 37是满足它的所有数 我当前的解决方案是正确的 Yields all the numbers i
  • 是否可以在程序运行时获取其输出?

    如果我有一个用 c 编写的 Windows 控制台程序 是否可以在程序运行时检索该程序的标准输出 如果没有 重写程序的最佳方法是什么 我知道我可以输出到文件并不断检查这些文件是否有更新 还有别的办法吗 有没有更好的办法 代码项目中有一些有趣
  • 如何在Sequelize模型中添加实例方法

    我想添加一个实例方法Sequelize User模型与postgres User模型定义如下 const Sql require sequelize const db require startup db const User db def
  • 将元素附加到已存在的 SOAP::Data 复杂类型

    我对 SOAP PERL 以及几乎所有其他我被要求做的事情都很陌生 所以我希望有人能给我指出正确的方向 我实现了一个简单的 WCF 解决方案 并编写了一个 PERL 客户端 它使用 SOAP lite 和 SOAP Data 将 复杂数据结
  • Android 将标签设置为微调器

    你好 如何在微调器中设置标签 即 当用户单击微调器按钮选项可见时 标签最初应可见 当用户选择选项时 标签应替换为新项目 微调器是否可以 Spinners没有 标签 但除此之外 我认为你所描述的正是Spinner does 关闭时 显示用户所
  • Col BY 在 Google 表格查询中导致解析错误

    我正在尝试在 google 表格中运行以下查询 但当我尝试选择 BY 列时收到解析错误 如果没有此列 它将按预期运行 查询如下 QUERY Applications received B DL Select B CT CU CV CW CX
  • 对于 Android SDK 17 或更低版本,如何从 uri 获取选定的 xls 文件路径?

    我需要sdk版本17或以下的解决方案 这是我的方法 public static String getRealPathFromURI API11to18 Context context Uri contentUri String proj M
  • 部署引发错误“不知道如何构建任务‘资产:预编译’”(Capistrano)

    有没有人在运行后遇到过这个错误 cap production deploy 我正在使用 capistrano Capistrano 版本 3 6 1 Rake 版本 11 3 0 这是日志 Backtrace restricted to i
  • 对 C++ 基类的不明确函数调用

    我正在尝试创建一个可变参数模板类 它为类型列表中的每个类提供一个方法 下面显示了一个示例 它创建了一个print类型列表中每个类的方法 include
  • nginx 中使用 proxy_pass 出现“请求标头或 Cookie 太大”

    我的服务器 A 上有以下 nginx 设置 面向互联网 仅相关部分 upstream new api server unix home ubuntu new api shared tmp sockets puma sock server l
  • 如何隐藏div元素下方的文本光标

    我是 CSS 和 javascript 新手 我有一个搜索文本框 可以在其中添加任何搜索值 输入错误值后 会弹出一个 div 并显示 未找到记录 带有关闭按钮来关闭 div 当我将光标放在文本框上而不关闭弹出窗口后 我的光标显示在 div
  • @end 在实现上下文中丢失[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我没有足够
  • Android:使用隐式意图读取txt文件

    问题 我正在尝试使用隐式打开 txt 文件Intent ACTION GET CONTENT 并将文本文件内容存储到数组列表中 当我尝试使用 Uri 的文件路径打开文件时getPath 并创建一个BufferedReader对象从文本文件中
  • 遗留文件的 QVariantList 序列化

    我正在以旧的遗留文件格式 不是我们的 阅读 很明显 这种文件格式是使用序列化编写的 因此为了让我的生活更轻松 我在阅读时也做了同样的事情 在读取文件的某个时刻 一个段被识别为QMetaType QVariantList https doc