ascii转16进制

  1. QString str = "08_48_Jun_09_2020_测试";
  2. QString hex_str = str.toLocal8Bit().toHex(); // 将字符串转Hex
  3. //输出为30 38 5F 34 38 5F 4A 75 6E 5F 30 39 5F 32 30 32 30 5F B2 E2 CA D4

16进制转ascii

  1. QString str = "30 38 5F 34 38 5F 4A 75 6E 5F 30 39 5F 32 30 32 30 5F B2 E2 CA D4";
  2. QByteArray byte = QString2Hex(ascii2); // 将字符串转16进制
  3. QString tem = QString::fromLocal8Bit(byte); // 将16进制转ascii
  4. // 将字符串转16进制
  5. QByteArray ShowTraceData::QString2Hex(QString str)
  6. {
  7. QByteArray senddata;
  8. int hexdata,lowhexdata;
  9. int hexdatalen = 0;
  10. int len = str.length();
  11. senddata.resize(len/2);
  12. char lstr,hstr;
  13. for(int i=0; i<len; )
  14. {
  15. hstr=str[i].toLatin1();
  16. if(hstr == ' ')
  17. {
  18. i++;
  19. continue;
  20. }
  21. i++;
  22. if(i >= len)
  23. break;
  24. lstr = str[i].toLatin1();
  25. hexdata = ConvertHexChar(hstr);
  26. lowhexdata = ConvertHexChar(lstr);
  27. if((hexdata == 16) || (lowhexdata == 16))
  28. break;
  29. else
  30. hexdata = hexdata*16+lowhexdata;
  31. i++;
  32. senddata[hexdatalen] = (char)hexdata;
  33. hexdatalen++;
  34. }
  35. senddata.resize(hexdatalen);
  36. return senddata;
  37. }
  38. // 将字符串转16进制
  39. char ShowTraceData::ConvertHexChar(char ch)
  40. {
  41. if((ch >= '0') && (ch <= '9'))
  42. return ch-0x30;
  43. else if((ch >= 'A') && (ch <= 'F'))
  44. return ch-'A'+10;
  45. else if((ch >= 'a') && (ch <= 'f'))
  46. return ch-'a'+10;
  47. else return (-1);
  48. }