有一组十六进制数使用QByteArray进行存储;需要将其插入QJsonObject,然后通过网络发送出去;接收到后,再转换回QByteArray;
- QString str = "";
- QJsonObject jsonObj;
- QByteArray byteArray;
-
- byteArray.resize(2);
- byteArray[0] = 0x3c;
- byteArray[1] = 0xb8;
-
-
- /* QByteArray 转 QString */
- str.append(byteArray.toHex());
-
- /* 插入到QJsonObject */
- jsonObj.insert("obj", str);
-
-
- /* 网络传输... */
- // 接收到字符串后...
- /* QString 转 QByteArray */
- QByteArray ba = GetHexValue(str);
- QByteArray Main::GetHexValue(QString str)
- {
- QByteArray senddata;
- int hexdata,lowhexdata;
- int hexdatalen = 0;
- int len = str.length();
- senddata.resize(len/2);
- char lstr,hstr;
- for(int i=0; i
- {
- hstr=str[i].toLatin1();
- if(hstr == ' ')
- {
- i++;
- continue;
- }
- i++;
- if(i >= len)
- break;
- lstr = str[i].toLatin1();
- hexdata = ConvertHexChar(hstr);
- lowhexdata = ConvertHexChar(lstr);
- if((hexdata == 16) || (lowhexdata == 16))
- break;
- else
- hexdata = hexdata*16+lowhexdata;
- i++;
- senddata[hexdatalen] = (char)hexdata;
- hexdatalen++;
- }
- senddata.resize(hexdatalen);
- return senddata;
- }
-
- char Main::ConvertHexChar(char ch)
- {
- if((ch >= '0') && (ch <= '9')) //限定字符0-9
- return ch-0x30;
- else if((ch >= 'A') && (ch <= 'F')) //限定字符A-F
- return ch-'A'+10;
- else if((ch >= 'a') && (ch <= 'f')) //限定字符a-f
- return ch-'a'+10;
- else return (-1);
- }
结束。