Qt: memcpy failed.. 如何复制?
Qt: memcpy failed.. How to copy?
我今天的问题是关于 Qt 和 memcpy() 函数的。
我有一个 QByteArray i_byte_array 包含我需要的原始数据。我尝试的第一件事是将这些数据复制到 char* l_array 中。
这给了我:
void blablafunctionblabla(const QByteArray& i_byte_array)
{
char* l_array = (char*)malloc(i_byte_array.size());
memcpy(l_array, i_byte_array, i_byte_array.size());
// OR: char* l_array = i_byte_array.data(); // same result
}
当我 运行 代码时,我希望复制 i_byte_array 的全部内容,即:
i_byte_array values
结果我只得到这个...:
l_array value
似乎复制在第一个/0处停止了,忽略了我要求他复制的大小..
所以我的问题是为什么 memcpy 函数会发生这种情况?我需要如何继续才能复制所有原始数据? (甚至 /0 这对我来说是有用的数据)
其实memcpy
并没有忽略空字符。我想 IDE(可能是 Qt Creator)会忽略空字符,所以您看不到 char 字符串的全部内容。
如果您通过以下方式将 l_array
导入到 QByteArray
:
QByteArray ba = QByteArray::fromRawData(l_array, i_byte_array.size());
您会看到 ba
的内容与 i_byte_array
相同。
你可以查看 SO 的 memcpy 问题:How could I copy data that contain '[=16=]' character。
我今天的问题是关于 Qt 和 memcpy() 函数的。 我有一个 QByteArray i_byte_array 包含我需要的原始数据。我尝试的第一件事是将这些数据复制到 char* l_array 中。 这给了我:
void blablafunctionblabla(const QByteArray& i_byte_array)
{
char* l_array = (char*)malloc(i_byte_array.size());
memcpy(l_array, i_byte_array, i_byte_array.size());
// OR: char* l_array = i_byte_array.data(); // same result
}
当我 运行 代码时,我希望复制 i_byte_array 的全部内容,即: i_byte_array values
结果我只得到这个...: l_array value
似乎复制在第一个/0处停止了,忽略了我要求他复制的大小..
所以我的问题是为什么 memcpy 函数会发生这种情况?我需要如何继续才能复制所有原始数据? (甚至 /0 这对我来说是有用的数据)
其实memcpy
并没有忽略空字符。我想 IDE(可能是 Qt Creator)会忽略空字符,所以您看不到 char 字符串的全部内容。
如果您通过以下方式将 l_array
导入到 QByteArray
:
QByteArray ba = QByteArray::fromRawData(l_array, i_byte_array.size());
您会看到 ba
的内容与 i_byte_array
相同。
你可以查看 SO 的 memcpy 问题:How could I copy data that contain '[=16=]' character。