QByteArray(const char *data, int size = -1) //QByteArray Str("1234") 内存中存储可能就是对应的ASSIC:0x31, 0x32, 0x33, 0x34
QByteArray QByteArray::fromHex(const QByteArray &hexEncoded) //将字符串的“1234”变为0x11 0x34,原本占用4字节内存,现在变为2字节。0x31, 0x32, 0x33, 0x34 ==> 0x12 0x34
QByteArray QByteArray::toHex() const //将0x12 0x34 变为 “1234” 原本占用2字节内存,现在变为4字节 0x12 0x34 ==> 0x31, 0x32, 0x33, 0x34
int QByteArray::toInt(bool *ok = Q_NULLPTR, int base = 10) const //Str.toInt(&Ok, 16)将字符串 “1234”变为int型 0x1234,, 转换的前提:Str内就是存的字符串,Str内存的不是“0”--“9” “a”--“f”,不能转换成功
QString(const QByteArray &ba) //可以将QByteArray转换为字符串,我认为内存占用,以及数据都是一样的,只是类型变了,原来QByteArray表示0x31 0x32 0x33 0x34, 还是同样的数据用QString表示了
QString fromUtf8(const QByteArray &); //将QByteArray转换为QSting。字符串的编码方式不同,内存占用以及数据就不同,但是都可以看成char[] 数组,在Qt中char 数组就是QByteArray,因此将不同编码方式的字符串转换为QString的函数入参都是QByteArray
QString number( A, B); //将数字转换为字符串 将A转变为B进制, A=10 B=16 转换为“a” : 10 = 0x0A ; A=10 B=10 转换为“10”
int QString::toInt(bool *ok = Q_NULLPTR, int base = 10) const //base = 16,将字符串 “12”变为 0x12
QByteArray QString::toLatinl() const; //将QString编码的字符串转换到 其他类型的字符串编码
QByteArray QString::toUtf8() const; //举例: 字符串“1”,在内存中就是0x31 (ASSIC 0x31表示1),只不过存储方式是QString的编码,假如Utf8与QString的编码一样,转换出来后,还是0x31
QByteArray QString::toLocal8Bit() const; //假如 Local8Bit中 “1” 用16进制0x88表示, 那么转换后,内存的数成了0x88,
QByteArray QString;:toUCS4() const;
Latin1:SO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF
utf8字符集以2个或以上的字节表示一个汉字,实际上具体的数值和unicode有很大的相关性
unicode字符集以2个或以上的字节表示一个汉字。
gb18030字符集兼容了gbk字符集,以两个字节表示一个文字。windows系统可能使用的就是这两种的一种。
UCS:通用字符集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。UCS-2用两个字节编码,UCS-4用4个字节编码。
QT QString与QByteArray的相互转换
最新推荐文章于 2024-09-21 15:29:41 发布