c++ - 将 QBuffer 用于二进制数据

标签 c++ qt

我正在编写一个 Qt (4.6) 应用程序,负责从 usb acm 调制解调器设备读取数据。从设备中读取原始二进制和 (ascii) 字符数据的混合。我有一个线程负责在数据可用时不断地将数据从设备读取到共享内存中,第二个线程负责处理此数据。

我正在考虑使用 QBuffer 类作为存储数据并在线程之间共享数据的方法,但是当我读到 QByteArray(QBuffer 将其用作数据存储)时。我开始担心 QBuffer 总是会在线程之间传递的数据末尾附加一个 '\0' Null 字符,因为 QByteArray 表现出这种行为?是这种情况还是 QBuffer 允许我存储和检索数据而不对我的所有数据强制执行任何终止字符“\0”?

最佳答案

终止 0 对您的应用程序是透明的。

例如,如果您将“ABC”附加到数组,则会附加“ABC\0”,但 size() 仍将返回 3,如果您随后附加“DEF”,则数组将包含“ABCDEF\0” (并且 size() 仍将返回 6,而不是 7)。

如果您请求指向原始数据的指针以使用 C 库中的函数进行进一步处理,则终止符 0 可能很有用。

关于c++ - 将 QBuffer 用于二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7630328/

相关文章:

c++ - 这个 C++ 代码会一直按我的预期工作,还是不能保证执行顺序?

c++ - 了解 use_count 与 shared_ptr

c++ - Qt - 如何获取|编译Mysql驱动

c++ - 更新 sourceModel() 而不在 QSortFilterProxyModel 上应用过滤

c++ - Qt多行替代水平布局

c++ - 在磁盘上使用循环缓冲区

c++ - 是否可以使用 1D 索引访问 C++ 2D int 数组?

c++ - pclint 执行时包含文件的顺序是否重要?

python - 如何在 PyQt 中设置大于屏幕 2/3 的小部件的初始大小

python - Qt Pyside 在小部件中显示结果