最近項目用到了需要將字符串轉換成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進制的形式顯示在界面上了,不過我目前這個代碼里面還存在一個問題,組后多出一組數據來,不知道哪里來的。

