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数组

怎么把unsigned char数组转化为字符串类型

将 unsigned char 转换为 signed char 以获得红黑树

使用 char 或 unsigned char 数组存储原始数据更好吗?

什么是unsigned char;;?