我试图转换QByteArray
为std::vector<unsigned char>
使用以下代码:
unsigned char* buffer = (unsigned char*)byteArrayBuffer.constData();
std::vector<unsigned char>::size_type size = strlen((const char*)buffer);
std::vector<unsigned char> bufferToCompress(buffer, buffer + size);
但是,假设这byteArrayBuffer
是一个QByteArray
充满数据的数据,我认为它不能很好地运行,unsigned char* buffer = (unsigned char*)byteArrayBuffer.constData();
因为byteArrayBuffer.size()
返回的值不同于bufferToCompress.size()
。
我该如何运作?
我对Qt不熟悉,但是您肯定只想
std::vector<unsigned char> bufferToCompress(
byteArrayBuffer.begin(), byteArrayBuffer.end());
注意:strlen
在C ++中不是特别有用;它告诉您C样式的以null终止的字符串的长度(通过搜索内存,直到找到或者找到一个零值字节,或者从可访问内存的末尾掉下来然后崩溃),但是却无法告诉您大小数组,这是您在这里需要的。同样,使用邪恶的C样式强制转换强制无效代码进行编译也不是一个好主意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句