【发布时间】:2019-07-11 02:11:56
【问题描述】:
我需要将 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的结果是这样的:
data = (图片的QByteArray)
data_image = unsigned char* 来自数据
我认为它没有完全复制。我需要用于外部 DLL 函数的 unsigned char* 数据。
【问题讨论】:
-
您希望您的调试器如何准确地知道
data_image指向多少字节?提示:调试器认为它是一个以 null 结尾的字符串。当然,事实并非如此。 -
@SamVarshavchik 如果它成功复制了整个字节数组,我该如何测试它?
-
@TerribleDog 你想用调试器测试吗?
-
您执行调试器具有的任何命令,这些命令明确显示给定内存位置的特定字节数。命令因调试器而异,但所有调试器都实现此基本功能。这就是调试器的用途。
-
@eyllanesc 我只想知道 unsigned char* 是否从 QByteArray 对象中获取所有数据。