Qt笔记-char[]或unsigned char[]转QByteArray时要注意的地方
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt笔记-char[]或unsigned char[]转QByteArray时要注意的地方相关的知识,希望对你有一定的参考价值。
下面这种都是文本串的形式,就可以直接转了比如这样的:
char test[10240] = "hello Wold";
unsigned char test2[1024] = "123456";
这类数据都是文本串的可以直接转出来。没有什么问题:
QByteArray array1(test);
QByteArray array2(test2);
但是,如果char[]和unsigned char[]的存的是二进制就不能这么搞了,比如存储加密数据,这样直接转有很大的可能,数据会丢失,因为存二进制时,很有可能在中间某个字节转成文本是\\0。
以加密为例。这里要拿到返回的数组长度,比如这样的:
unsigned char decrypt[10240 * 5]= '\\0' ;
int result = RSA_private_decrypt(dataArray.size(), dataArray.toStdString().data(), decrypt, rsa, RSA_PKCS1_PADDING);
这里的result就是加密后的长度,转成QByteArray时就需要用到这个了。
QByteArray retArray((char*)decrypt, result);
如果直接这样:
QByteArray retArray((char*)decrypt);
有极大的可能数据会丢失,造成加解密失败。
以上是关于Qt笔记-char[]或unsigned char[]转QByteArray时要注意的地方的主要内容,如果未能解决你的问题,请参考以下文章
在 Qt 中显示来自 unsigned char 的图像**
将 unsigned char 转换为 signed char 以获得红黑树