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. Convert 64 Byte QByteArray to two 32 Byte int
Qt 6.11 is out! See what's new in the release blog

Convert 64 Byte QByteArray to two 32 Byte int

Scheduled Pinned Locked Moved Solved General and Desktop
12 Posts 4 Posters 3.9k Views 1 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.
  • Christian EhrlicherC Offline
    Christian EhrlicherC Offline
    Christian Ehrlicher
    Lifetime Qt Champion
    wrote on last edited by
    #3

    How should this fit into a int64_t? A 64-bit (signed) integer can be max. 9223372036854775807 (hex: 0x7FFFFFFFFFFFFFFF) and your QByteArray is 32 Bytes long.

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    1 Reply Last reply
    1
    • JonBJ JonB

      @Infinity said in Convert 64 Byte QByteArray to two 32 Byte int:

      Now I have to split it into two 32 Byte long QByteArray's

      Then rather you intend: QByteArray s = sig.mid(32, 32);

      Then I have to convert the QByteArray r and s into a big int.

      Define "big int". You have 32 bytes (each) now. On a 64-bit machine ints go up to 8 bytes long. (Actually, it looks like mostly int will only be 32-bit, and even the largest language-supported long long [int] will, I think, only be 64-bits --- see e.g. https://en.cppreference.com/w/cpp/language/types.) So are you going to user some higher-precision numerical library? (E.g. I imagine boost might offer this.) " convert them back into a QByteArray" will depend on the package you use.

      I Offline
      I Offline
      Infinity
      wrote on last edited by Infinity
      #4

      @JonB It works with boost cpp_int. How can I convert a cpp_int back to a QByteArray?

      aha_1980A 1 Reply Last reply
      0
      • I Infinity

        @JonB It works with boost cpp_int. How can I convert a cpp_int back to a QByteArray?

        aha_1980A Offline
        aha_1980A Offline
        aha_1980
        Lifetime Qt Champion
        wrote on last edited by
        #5

        @Infinity If you can convert it to const char [] or std::string, then you can also create a QByteArray from it.

        Regards

        Qt has to stay free or it will die.

        I 1 Reply Last reply
        2
        • aha_1980A aha_1980

          @Infinity If you can convert it to const char [] or std::string, then you can also create a QByteArray from it.

          Regards

          I Offline
          I Offline
          Infinity
          wrote on last edited by
          #6

          @aha_1980 I found a way

          std::string str;
          std::stringstream stream;
          stream << std::hex << s;
          str = stream.str();
          
          QByteArray sByteArray = QByteArray::fromStdString(str);
          

          Is that correct or is there a cleaner way to do it?

          aha_1980A 1 Reply Last reply
          0
          • I Infinity

            @aha_1980 I found a way

            std::string str;
            std::stringstream stream;
            stream << std::hex << s;
            str = stream.str();
            
            QByteArray sByteArray = QByteArray::fromStdString(str);
            

            Is that correct or is there a cleaner way to do it?

            aha_1980A Offline
            aha_1980A Offline
            aha_1980
            Lifetime Qt Champion
            wrote on last edited by
            #7

            @Infinity I'm not sure there is a cleaner way, but it looks like that could work.

            Regards

            Qt has to stay free or it will die.

            1 Reply Last reply
            0
            • I Offline
              I Offline
              Infinity
              wrote on last edited by Infinity
              #8

              Here is how I solved the problem. Just in case someone else faces a similar problem.

              QByteArray sig = QByteArray::fromHex("3045022100f209c63ebba931be2b6bb6fffbe1d7e45a45e9ea48b835280d954ca7058953eb02204a145da934c1104a4d2253663bc0db4136b52cd62fe32cf383");
              
              QByteArray rByteArray = sig.mid(0, 32);
              QByteArray sByteArray = sig.mid(32, 32);
              
              qDebug().noquote() << "r hex      :" << rByteArray.toHex();
              qDebug().noquote() << "s hex      :" << sByteArray.toHex();
              
              // Create a cpp_int
              boost::multiprecision::cpp_int r("0x" + rByteArray.toHex().toStdString());
              
              // Create a cpp_int
              boost::multiprecision::cpp_int s("0x" + sByteArray.toHex().toStdString());
              
              boost::multiprecision::cpp_int sum;
              
              sum = r + s;
              
              // Convert a cpp_int to a QByteArray
              std::string str;
              std::stringstream stream;
              stream << std::hex << sum;
              str = stream.str();
              
              return QByteArray::fromStdString(str);
              
              1 Reply Last reply
              0
              • Christian EhrlicherC Offline
                Christian EhrlicherC Offline
                Christian Ehrlicher
                Lifetime Qt Champion
                wrote on last edited by Christian Ehrlicher
                #9

                Why to conversion to QString and std::string at all? cpp_int takes a const char * afaics.

                Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                Visit the Qt Academy at https://academy.qt.io/catalog

                I 1 Reply Last reply
                0
                • Christian EhrlicherC Christian Ehrlicher

                  Why to conversion to QString and std::string at all? cpp_int takes a const char * afaics.

                  I Offline
                  I Offline
                  Infinity
                  wrote on last edited by
                  #10

                  @Christian-Ehrlicher I need to insert "0x" at the beginning. Could I also insert it directly in the QByteArray?

                  1 Reply Last reply
                  0
                  • Christian EhrlicherC Offline
                    Christian EhrlicherC Offline
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on last edited by
                    #11

                    @Infinity said in Convert 64 Byte QByteArray to two 32 Byte int:

                    Could I also insert it directly in the QByteArray?

                    What's wrong with the documentation?

                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                    Visit the Qt Academy at https://academy.qt.io/catalog

                    I 1 Reply Last reply
                    1
                    • Christian EhrlicherC Christian Ehrlicher

                      @Infinity said in Convert 64 Byte QByteArray to two 32 Byte int:

                      Could I also insert it directly in the QByteArray?

                      What's wrong with the documentation?

                      I Offline
                      I Offline
                      Infinity
                      wrote on last edited by
                      #12

                      @Christian-Ehrlicher Thank you very much. I changed the example above accordingly. How does that look like?

                      1 Reply Last reply
                      0

                      • Login

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