下面这种都是文本串的形式,就可以直接转了比如这样的:
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);
有极大的可能数据会丢失,造成加解密失败。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://it1995.blog.csdn.net/article/details/125701902
内容来源于网络,如有侵权,请联系作者删除!