1. // 将字符串转16进制
    2. char Dx1000_dialogSP::ConvertHexChar(char ch)
    3. {
    4. if((ch >= '0') && (ch <= '9'))
    5. return ch-0x30;
    6. else if((ch >= 'A') && (ch <= 'F'))
    7. return ch-'A'+10;
    8. else if((ch >= 'a') && (ch <= 'f'))
    9. return ch-'a'+10;
    10. else return (-1);
    11. }
    12. QByteArray QString2Hex(QString str)
    13. {
    14. QByteArray senddata;
    15. int hexdata,lowhexdata;
    16. int hexdatalen = 0;
    17. int len = str.length();
    18. senddata.resize(len/2);
    19. char lstr,hstr;
    20. for(int i=0; i<len; )
    21. {
    22. hstr=str[i].toLatin1();
    23. if(hstr == ' ')
    24. {
    25. i++;
    26. continue;
    27. }
    28. i++;
    29. if(i >= len)
    30. break;
    31. lstr = str[i].toLatin1();
    32. hexdata = ConvertHexChar(hstr);
    33. lowhexdata = ConvertHexChar(lstr);
    34. if((hexdata == 16) || (lowhexdata == 16))
    35. break;
    36. else
    37. hexdata = hexdata*16+lowhexdata;
    38. i++;
    39. senddata[hexdatalen] = (char)hexdata;
    40. hexdatalen++;
    41. }
    42. senddata.resize(hexdatalen);
    43. return senddata;
    44. }
    45. // 用法
    46. QString2Hex("00 01 05 15"); // 返回的是QByteArray类型00010515