【问题标题】:how to convert QByteArray to Array in qt?如何将 QByteArray 转换为 qt 中的数组?
【发布时间】:2019-04-25 09:02:39
【问题描述】:

我有一个像这样的 QByteArray 变量:

QByteArray read= port->readAll();

现在我想将读取转换为数组以写入二进制文件,如下所示:

int b[] = {}; // lengh of array is port->readAll() size
QFile myFile("e:/test/test.dat");
if(!myFile.open(QIODevice::WriteOnly))return;
myFile.write((char*)b,sizeof(int));
myFile.flush();
myFile.close();

【问题讨论】:

  • 你为什么不能使用data() - 你需要它比QByteArray 更长寿,还是有其他原因?顺便说一句,我真的不会将名称 read 用于变量 - 与流行的库或系统调用名称太相似。
  • 我的问题是将 QByteArray 转换为 Array。
  • 既然您可以访问QByteArray 的内容以用于您显示的代码等目的,为什么需要这样做? myFile.write(read.data(), sizeof (int)) 没有实现的目标并不明显。或者,如果您打算编写整个数组,myFile.write(read.data(), read.size()) 或等效地,只需 myFile.write(read)
  • 我必须从调制解调器读取所有数据:QByteArray read= port->readAll();并写出来
  • 那么你为什么不能像我展示的那样将QByteArray 传递给QFile::write()?目前还不清楚为什么这对你不起作用。

标签: c++ qt qbytearray


【解决方案1】:

无需创建 int[] b = ..etc 只需使用方法 QByteArray::data():

QFile file(...);
QByteArray byteArray = ...
...
file.write(byteArray.data(), byteArray.size());

或者你可以直接将 QByteArray 的对象设置为 file.write():

QFile file(...);
QByteArray byteArray = ...;

file.write(byteArray);

【讨论】:

    猜你喜欢
    • 2014-12-23
    • 2017-06-16
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    相关资源
    最近更新 更多