gpt4 book ai didi

c++ - QByteArray 到 unsigned char 没有完全复制

转载 作者:行者123 更新时间:2023-11-28 01:19:52 27 4
gpt4 key购买 nike

我需要将 QImage 的 QByteArray 转换为 unsigned char *。

我是这样做的:

QByteArray data;
QBuffer buffer(&data);

buffer.open(QIODevice::WriteOnly);
convImage.save(&buffer, "PNG");
buffer.close()

unsigned char *data_image = (unsigned char *)malloc(data.size());
memcpy(data_image, reinterpret_cast<unsigned char *>(data.data()), (unsigned int)data.size());

但是data_image对比图片的QByteArray结果是这样的:

enter image description here

data = (QByteArray of the Image)

data_image = unsigned char* from data

我认为它没有完全复制。我需要外部 DLL 函数的 unsigned char* 数据。

最佳答案

您看不到 data_image 数组的完整长度,因为它只是一个指针,无法知道它的实际大小。因此,调试器会应用一些标准规则在它认为应该停止的时候停止。这样的规则是在 NULL 字节处停止。

如果您使用的是 Qt Creator,有几种方法可以强制调试器显示更多数据:

  1. 右键单击您感兴趣的变量,然后选择Change Value Display Format > Array of xxx items。这是最简单的方法,但它有局限性,因为您只能选择 10、100、1,000 或 10,000 项。
  2. 右键单击您感兴趣的变量并选择打开内存编辑器 > 在对象地址打开内存 View 。这是最通用的,因为您可以看到内存中的所有内容,但如果您不习惯使用内存 View ,它可能会更加困惑。

关于c++ - QByteArray 到 unsigned char 没有完全复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56980759/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com