QByteArray
作者:互联网
一、用途
QByteArray用来存储原始char类型数据。Qt中QString等类型数据内部都是通过QChar存储,所以通过.data()返回的数据都是QChar。
注意:把char类型数据存入QByteArray类型数据时,char数据需要以'\0'结尾。
二、常用功能
2.1char类型QByteArray类型数据交互
2.1.1char数据写入QByteArray
1 QByteArray tmp; 2 QString myStr("abc"); 3 4 tmp.append(myStr); //tmp存储“abc” 5 6 /////////////////////////// 7 char cdata[] = { 1,2,3,4,5 }; 8 QByteArray myTmp; 9 //cSize是5 10 int cSize = sizeof(cdata); 11 //cSize是1 12 //cSize = sizeof(*cdata); 13 myTmp.reserve(sizeof(*cdata)+1); 14 myTmp.append(cdata,sizeof(cdata)+1);
QByteArray存入数据支持的数据类型:
1 QByteArray & append(const QByteArray &ba) 2 QByteArray & append(int count, char ch) 3 QByteArray & append(const char *str) 4 QByteArray & append(const char *str, int len) 5 QByteArray & append(char ch) 6 QByteArray & append(const QString &str) 7
2.1.2QByteArray数据中读取char数据
1 /////////////////////////// 2 char cdata[] = { 1,2,3,4,5 }; 3 QByteArray myTmp; 4 //cSize是5 5 int cSize = sizeof(cdata); 6 //cSize是1 7 //cSize = sizeof(*cdata); 8 myTmp.reserve(sizeof(*cdata)+1); 9 myTmp.append(cdata,sizeof(cdata)+1); 10 11 char cArra[6]; 12 memcpy(cArra,myTmp.data(),myTmp.size());
2.2从16进制字符读入(2个16进制字符表示1个ASCII码)
1 2 QByteArray macAddress = QByteArray::fromHex("123456abcdef"); 3 4 //macSize大小是6,会把两个16进制字符组合成一个ASCII码 5 int macSize = macAddress.size(); 6 macAddress.toHex(':'); // returns "12:34:56:ab:cd:ef" 7 macAddress.toHex(0); // returns "123456abcdef"
2.2内部数据转16进制字符
功能:会把QByteArray存储的原始数据每个字节转成2个16进制字符,不足2个字符会自动补0。
可以设置每个字符之间的连接符(两个16进制字符)
1 QByteArray macAddress = QByteArray::fromHex("123456abcdef"); 2 3 //macSize大小是6,会把两个16进制字符组合成一个ASCII码 4 int macSize = macAddress.size(); 5 //用冒号链接 6 QByteArray mac = macAddress.toHex(':'); // returns "12:34:56:ab:cd:ef" 7 //用-字符链接 8 mac = macAddress.toHex(':'); // returns "12-34-56-ab-cd-ef" 9 mac = macAddress.toHex(0); // returns "123456abcdef"
2.3内部数据转其他进制数字
三、相关参考
标签:myTmp,macAddress,QByteArray,char,cdata,append 来源: https://www.cnblogs.com/mehome/p/15972128.html