Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [Solved]Convert ASCII hex to int
Forum Updated to NodeBB v4.3 + New Features

[Solved]Convert ASCII hex to int

Scheduled Pinned Locked Moved General and Desktop
27 Posts 7 Posters 50.1k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Leopold

    @VRonin
    the example works great for transforming from hex to dec but i get the same row what i have in the txt now as a vektor. In my code you see that I have different y Vektors.
    I need value of field1 in y1, field2 in y2 and so on.I can not figure out how to take the i into a loop with y(i).

    VRoninV Offline
    VRoninV Offline
    VRonin
    wrote on last edited by
    #21

    @Leopold Every time you call i.next(); it moves to the next field in order so it's quite easy to manage

    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
    ~Napoleon Bonaparte

    On a crusade to banish setIndexWidget() from the holy land of Qt

    1 Reply Last reply
    0
    • L Offline
      L Offline
      Leopold
      wrote on last edited by
      #22

      I tried this:
      { // iterate over all the matches

      										const QRegularExpressionMatch hexMatch = i.next();
      										qDebug() <<  hexMatch.capturedRef(0) <<  hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16); //capturedRef contains the part matched by the regular expression
                                              y1.append(hexMatch.capturedRef(1).toUInt(Q_NULLPTR,16));
                                               y2.append(hexMatch.capturedRef(2).toUInt(Q_NULLPTR,16));
                                                y3.append(hexMatch.capturedRef(3).toUInt(Q_NULLPTR,16));
                                                 y4.append(hexMatch.capturedRef(4).toUInt(Q_NULLPTR,16));
                                          }
      
      VRoninV 1 Reply Last reply
      0
      • L Leopold

        I tried this:
        { // iterate over all the matches

        										const QRegularExpressionMatch hexMatch = i.next();
        										qDebug() <<  hexMatch.capturedRef(0) <<  hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16); //capturedRef contains the part matched by the regular expression
                                                y1.append(hexMatch.capturedRef(1).toUInt(Q_NULLPTR,16));
                                                 y2.append(hexMatch.capturedRef(2).toUInt(Q_NULLPTR,16));
                                                  y3.append(hexMatch.capturedRef(3).toUInt(Q_NULLPTR,16));
                                                   y4.append(hexMatch.capturedRef(4).toUInt(Q_NULLPTR,16));
                                            }
        
        VRoninV Offline
        VRoninV Offline
        VRonin
        wrote on last edited by
        #23

        @Leopold said in [Solved]Convert ASCII hex to int:

        { // iterate over all the matches

        Look at that comment. Do you see what you are doing wrong?

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        1 Reply Last reply
        0
        • L Offline
          L Offline
          Leopold
          wrote on last edited by VRonin
          #24

          yes I see that it is a loop but if i write :

           if(eingangMatch.hasMatch())
          								{
          									if(eingangMatch.capturedRef(1).compare("80",Qt::CaseInsensitive)==0)
          									{ // Eingang==("80:")
          										qDebug() << eingangMatch;
          										for(QRegularExpressionMatchIterator i = hexRegExp.globalMatch(line);
          
                                                      i.hasNext();
          
          
                                                      )
          
          
          											const QRegularExpressionMatch hexMatch = i.next();
                                                      qDebug() << hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16); //capturedRef contains the part matched by the regular expression
                                                      y1.append(hexMatch.capturedRef(1).toUInt(Q_NULLPTR,16));
                                                       y2.append(hexMatch.capturedRef(2).toUInt(Q_NULLPTR,16));
                                                        y3.append(hexMatch.capturedRef(3).toUInt(Q_NULLPTR,16));
                                                         y4.append(hexMatch.capturedRef(4).toUInt(Q_NULLPTR,16));
          
          
          
                                          }
          

          the qDebug() << eingangMatch; and qDebug() << hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16);
          don't work and all my y vectors get "0"
          "80: 1C 05 3A 85 FF 4F FF 1D 89 1E 08 10 01 00 00 00 3B 87 51 01 AF 00 58 09 88 10 00 00 "
          QVector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
          QVector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

          VRoninV 1 Reply Last reply
          0
          • L Leopold

            yes I see that it is a loop but if i write :

             if(eingangMatch.hasMatch())
            								{
            									if(eingangMatch.capturedRef(1).compare("80",Qt::CaseInsensitive)==0)
            									{ // Eingang==("80:")
            										qDebug() << eingangMatch;
            										for(QRegularExpressionMatchIterator i = hexRegExp.globalMatch(line);
            
                                                        i.hasNext();
            
            
                                                        )
            
            
            											const QRegularExpressionMatch hexMatch = i.next();
                                                        qDebug() << hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16); //capturedRef contains the part matched by the regular expression
                                                        y1.append(hexMatch.capturedRef(1).toUInt(Q_NULLPTR,16));
                                                         y2.append(hexMatch.capturedRef(2).toUInt(Q_NULLPTR,16));
                                                          y3.append(hexMatch.capturedRef(3).toUInt(Q_NULLPTR,16));
                                                           y4.append(hexMatch.capturedRef(4).toUInt(Q_NULLPTR,16));
            
            
            
                                            }
            

            the qDebug() << eingangMatch; and qDebug() << hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16);
            don't work and all my y vectors get "0"
            "80: 1C 05 3A 85 FF 4F FF 1D 89 1E 08 10 01 00 00 00 3B 87 51 01 AF 00 58 09 88 10 00 00 "
            QVector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
            QVector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

            VRoninV Offline
            VRoninV Offline
            VRonin
            wrote on last edited by VRonin
            #25

            @Leopold said in [Solved]Convert ASCII hex to int:

            yes I see that it is a loop

            I don't think you do...

            int h=0;
            for(QRegularExpressionMatchIterator i = hexRegExp.globalMatch(line);i.hasNext();++h){
            const QRegularExpressionMatch hexMatch = i.next();
            qDebug() << hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16); 
            switch(h){
            case 1 : y1.append(hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16)); break;
            case 2 : y2.append(hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16)); break;
            case 3 : y3.append(hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16)); break;
            case 4 : y4.append(hexMatch.capturedRef(0).toUInt(Q_NULLPTR,16)); break;
            default: break;
            }
            }

            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
            ~Napoleon Bonaparte

            On a crusade to banish setIndexWidget() from the holy land of Qt

            1 Reply Last reply
            0
            • L Offline
              L Offline
              Leopold
              wrote on last edited by
              #26

              i get error for the "i" no match for operator "++"
              and the switch operator is not an integer
              I copied the int i=0 as well
              btw:my compiler is mingw9-32 from QT 5.6.2

              1 Reply Last reply
              0
              • L Offline
                L Offline
                Leopold
                wrote on last edited by
                #27

                the i was occupied by the "QRegularExpressionMatchIterator"
                i changed int i to int h then ++h and switch h and it works.
                Thank you great!

                1 Reply Last reply
                1

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved