来自3https://blog.csdn.net/QQ _ 31073871/article/details/79881354
目录:
1、将字节数组(char*、uint8、int8)转换为QByteArray类
2、将QByteArray类转换为字节数组(char*、uint8、int8) ) ) ) ) ) ) ) ) )。
3、将字节数组转换为hex字符串
4、将字节数组(char*、uint8、int8)转换为QString
5、QString字节数组(char*、uint8、int8) ) ) )。
6、单个数字、字符串、互转
QByteArray类提供类似于数组的功能,但它是更强大和更常用的函数:
只读元素at(n )、读写元素(n )、附加元素append (qstring、char*、char、q字节)、迭代器、元素存储指针data ) )
1、将字节数组转换为QByteArray类(字节数组是指uint8、int8和char的数组) )。
q直接使用字节构造函数即可,
常数char * str=' abcde ';
charu8_ arr [3]={0x a1,0x C2,0x3e };
qbytearrayQA1(str );
qbytearrayQA2(U8_ARR,3 );
可以在成员函数data ()中获取QByteArray的元素存储地址,并使用*data访问QByteArray的元素
注意:如果数组中有“ ”,则在构建QByteArray对象时会遇到数组的 结构并停止
2、将QByteArray类转换为字节数组(char*、uint8、int8) ) ) ) ) ) ) ) )。
q直接使用QByteArray的成员函数即可
qbytearrayba(ABCD );
char *pArr=ba.data (;
3、将字节数组转换为hex字符串(字节数组是uint8、int8的数组) )。
uint 8u8_ arr [3]={0x F5,0x 07,0x a5 };
qbytearrayQA2(U8_ARR,3 );
qtringqstr(QA2.toHEX ) ); //
q调试(qstr.toupper ); //输出字符串: F507A5
QByteArray的toHex ()返回值仍为QByteArray类型。 由于每个字节都是两个hex字符,因此返回值的QByteArray长度将增加一倍。
4、将字节数组(char*、uint8、int8)转换为QString
如果字节数组包含字符串结尾字符 ,则可以直接使用QString构造函数构建QString对象。
如果字节数组没有0,则可以首先将字节数组转换为QByteArray,然后在QByteArray中构建QString。 请参照第1条
5、QString字节数组(char*、uint8、int8) ) ) )。
将QString转换为char*意味着将其转换为字节数组。
参考: https://blog.csdn.net/Lu _ embedded/article/details/52465203
本文提到了两种方法。
(1) QQ没有中文:
QString str;
char* ch;
QByteArray ba=str.toLatin1 (; //这一行必不可少
ch=ba.data (; //不允许这样使用: ch=str.toLatin1 ().data );
QString有中文。 为了避免乱码,必须使用QTextCodec
#包含文本编码解码器
qtext codec :3360 setcodecfortr (qtext codec :3360 codec forname (' gbk ' );
qtext codec : setcodecforlocale (qtext codec :3360 codec forname (' gbk ' );
QByteArray ba=str.toLocal8Bit (; //toLocal8Bit支持中文
注意: QString的toLatin1函数返回的QByteArray带
此外,这篇文章还说,第三行是必不可少的。 在此状态下,如果转动ch=str.toLatin1 ().data ),则会发生错误。 我认为原因是toLatin1的返回值是按值传递而不是按引用传递。 使用按价传递返回值。 返回值位于内存堆栈上,语句结束时返回值作为临时局部变量堆栈。 此时,如果使用. data ()指向指针,则指针指向的位置将被堆栈,不再存在。 为了避免这种情况,可以使用局部变量或局部静态变量接收toLatin1的返回值。 例如,这里的ba变量(toLatin1返回值的堆栈已消失,但ba仍然存在,因此ba.data ) )可以获取有效的指针。
)2)首先,将QString转换为标准库的字符串类型,然后将字符串转换为char *
qstring文件名称;
STD :3360 stringstr=filename.tostdstring (;
const char* ch=str.c_str (;
6、单个数字、字符串、互转
)1)将数字转换为字符串的两种方法:
()
int num=1000; //1000=0x03E8;
qstringstr=qstring('%1' ).arg ) num,4,16,) QChar ) '0' ).toUpper );
此方法可以将数组转换为十六进制样式' 03E8'、十进制样式字符串' 1000 '、八进制样式等
qstring :3360 number (双精度,char format='g ',int precision=6)、
例如,qstring str=qstring 33603360 number (1000; //str='1000 '
)2)字符串到数字:
使用QString的成员函数就可以了。 toInt、toDouble等
可以使用以下形状参数指定字符串样式
QString str='123 ';
bool OK;
inta=str.toint(ok,10 ); //a=123,确定OK=true
intB=str.toint(ok,16 ); //b=0x123,OK=true
-----------------
作者: qq_610642
来源: CSDN
译文: 3359 blog.csdn.net/QQ _ 31073871/article/details/79881354
声明:本文为博客原创文章。 转载请附上博文链接!