zoukankan      html  css  js  c++  java
  • QByteArray和十六进制的QString(char*)相互转换

     1 #include <QCoreApplication>
     2 #include <QDebug>
     3 #include <QDataStream>
     4 
     5 QByteArray HexStringToByteArray(QString HexString)
     6 {
     7     bool ok;
     8     QByteArray ret;
     9     HexString = HexString.trimmed();
    10     HexString = HexString.simplified();
    11     QStringList sl = HexString.split(" ");
    12 
    13     foreach (QString s, sl) {
    14         if(!s.isEmpty()) {
    15             char c = s.toInt(&ok,16)&0xFF;
    16             if(ok){
    17                 ret.append(c);
    18             }else{
    19                 qDebug()<<"非法的16进制字符:"<<s;
    20             }
    21         }
    22     }
    23     return ret;
    24 }
    25 
    26 QString ByteArrayToHexString(QByteArray &ba)
    27 {
    28     QDataStream out(&ba,QIODevice::ReadWrite);   //将str的数据 读到out里面去
    29     QString buf;
    30     while(!out.atEnd())
    31     {
    32         qint8 outChar = 0;
    33         out >> outChar;   //每次一个字节的填充到 outchar
    34         QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0')).toUpper() + QString(" ");   //2 字符宽度
    35         buf += str;
    36     }
    37     return buf;
    38 }
    39 
    40 int main(int argc, char *argv[])
    41 {
    42     QCoreApplication a(argc, argv);
    43     char cmd[7] = {0x40, 0x00, 0x00, 0x01, 0x00, 0x41, 0x0A};
    44     char* cmdString = "40 00 00 01 00 41 0a";
    45     QByteArray cmdBA = HexStringToByteArray(cmdString);
    46     qDebug()<<ByteArrayToHexString(cmdBA);
    47 
    48     return a.exec();
    49 }
    无欲速,无见小利。欲速,则不达;见小利,则大事不成。
  • 相关阅读:
    “孤立”用户
    MongoDB 维护Replica Set
    Design7:数据删除设计
    abap取中值的函数
    REPLACE...IN.....WITH.... 的使用
    ABAP中RETURN与EXIT语句的区别
    在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
    Extract Datasets
    事件
    计算字符串长度的实例
  • 原文地址:https://www.cnblogs.com/ch122633/p/8393406.html
Copyright © 2011-2022 走看看