QT学习 QByteArray QString相关

QByteArray

  1. 初始化
// 方式一
QByteArray arr("abc")
// 方式二
QByteArray arr;
arr.resize(3);
arr[0] = 'A';
arr[1] = 'B';
arr[2] = 'C';
// 方式三
char data[3] = { 0x41, 0x42, 0x43 };
QByteArray arr= QByteArray((const char *)data, sizeof(data));
  1. 读取
QByteArray arr("1234");
qDebug()<<arr.at(0)<<arr[1]<<arr.left(2)<<arr.mid(1,2)<<arr.right(2);
//输出:1 2 "12" "23" "34"
  1. 修改
QByteArray arr("1234");
arr.prepend( "abc");//"abc1234"
arr.append( "567");//"abc1234567"
arr.insert( 3, "def");//"abcdef1234567"
arr.replace(2,3,"xyz");//"abxyzf1234567"
arr.remove(0,5);//"f1234567"
  1. 数值转换
// QByteArray to数值
QByteArray arr("1234");
QByteArray harr("F");
QByteArray farr("123.456");
bool ok1;
qDebug() << arr.toInt();   // 1234
qDebug() << harr.toInt(&ok1,16);   //15
qDebug() << farr.toDouble();   // 123.456
// QByteArray from数值
QByteArray arr1 = QByteArray::number(123.456, 'E', 1);//"1.2E+02"
QByteArray arr2 = QByteArray::number(123.456, 'f', 1);//"123.5"
QByteArray arr3 = QByteArray::number(1234);//"1234"
QByteArray arr4 = QByteArray::number(123.456);//"123.456"

QString

  1. 初始化
// 方式一
QString str = "Hello";
// 方式二
QByteArray arr("1234");
QString str(arr);
// 方式三
char buf[] = "abc\r\n";
QString str = QString::fromUtf8(buf);
  1. 修改
// 使用+连接字符串
QString str;
QString userName("abc");
char data[] = "def";
str += userName + data + "1234"+ "\n";//"abcdef1234\n"
// 使用方法修改
QString  str = "1234";
str.prepend("abc");// "abc1234"
str.append("567\n");// "abc1234567\n"
  1. 数值转换
// QString from数值
QString str = QString::number(123.456);
str.setNum(123.456);
// QString to数值
bool ok; double d = str.toDouble(&ok);

QString arg

  1. arg(str1).arg(str2).arg(str3) 形式
  • 多个arg级联是按从左到右的顺序依次替换
  • 替换%按自然数递增的顺序依次替换
QString str = QString("%2 %3 %1").arg("%2ABC").arg("123")
//输出为: "123 %3 123ABC"
  1. arg(int, int, int) 形式
  • 显示十进制100
    QString str = QString("%1").arg(100, 0, 10);//"100"
  • 显示十六进制100
    QString str = QString("%1").arg(100, 0, 16);// "64"
  • 显示八进制100
    QString str = QString("%1").arg(100, 0, 8);// "144"
  1. arg(double, int, char, double) 形式
  • 显示4位数字
    QString str = QString("%1").arg(123.456789, 0, 'g',4);// "123.5"
  • 科学表示法显示4位数字
    QString str = QString("%1").arg(123.456789, 0, 'e',4);// "1.2346e+02"

转换

  1. QByteArray 转 QString
QByteArray buf("abc");
QString str = buf; 
// 中文
QByteArray buf("程序");
QTextCodec *tc = QTextCodec::codecForName("GBK");
QString str = tc->toUnicode(buf);
  1. QString 转 QByteArray
QString str("abc");
QByteArray arr = str.toUtf8();
  1. char* 转 QString
char buf[] = "abc";
QString str = QString::fromUtf8(buf)  ;
// 中文
char buf[] = "程序";
QString str = QString::fromLocal8Bit(buf);
  1. QString 转 char*
QString str = "abc";
qDebug()<<str.toUtf8().data();

  1. 转换成十六进制字符串
QByteArray arr;
arr.resize(3);
arr[0] = 0xa1;
arr[1] = 0xb2;
arr[2] = 0xc3;
QString str=arr.toHex().data();
str=str.toUpper();
qDebug()<<str;//"A1B2C3"
  1. 十六进制编码
QString str="A1B2C3";
QByteArray arr = QByteArray::fromHex (str.toLatin1().data());
// arr的结果数组是{0xa1,0xb2,0xc3}

乱码

// 方式一
#include <QTextCodec>
QByteArray arr("程序");
QTextCodec *tc = QTextCodec::codecForName("GBK");
QString str= tc->toUnicode(arr);
qDebug()<<str;
// 方式二
QByteArray arr("程序");
qDebug()<<QString::fromLocal8Bit(arr);
// 方式三
qDebug()<<QStringLiteral("程序");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值