下面这种都是文本串的形式,就可以直接转了比如这样的:
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);
有极大的可能数据会丢失,造成加解密失败。