Qt 将字符串转成16进制显示
最近项目用到了需要将字符串转换成16进制显示。这玩意折腾了一上午。
首先,数据块内容
struct UserData { char Head[3] = {'X','J','J'}; char Flag = '1'-'0x30'; char X_Position = '1'-'0x30'; char Y_Position = '@'-'0x30'; char Sum = Head[0] + Head[1] + Head[2] + Flag + X_Position + Y_Position; }userdata;
我需要将这个结构体通过网口发送出去,然后并且在界面显示发送的数据内容,发送是简单了,但是显示就麻烦了。
我做了一下工作,可能存在不必要的内容。
第一步,拼接字符串,并将字符串转成成QString
char temp[7]; temp[0] = userdata.Head[0]; temp[1] = userdata.Head[1]; temp[2] = userdata.Head[2]; temp[3] = userdata.Flag; temp[4] = userdata.X_Position; temp[5] = userdata.Y_Position; temp[6] = userdata.Sum; QString tt = temp;
第二步,将QString转成16进制的QByteArray,
QByteArray temp1 = tt.toLatin1().toHex();
第三步,添加空格
QByteArray temp2; for(int i = 0; i < temp1.length()/2;i++) { temp2 += temp1.mid(i*2,2) + " "; }
以上内容完成后,将可以将字符串一16进制的形式显示在界面上了,不过我目前这个代码里面还存在一个问题,组后多出一组数据来,不知道哪里来的。