首页 > 编程知识 正文

js查找字符串中指定字符,char转换成qstring

时间:2023-05-03 06:32:37 阅读:146216 作者:127

来自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

声明:本文为博客原创文章。 转载请附上博文链接!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。