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. How to convert ASCII Hex string to Byte array?
Forum Updated to NodeBB v4.3 + New Features

How to convert ASCII Hex string to Byte array?

Scheduled Pinned Locked Moved General and Desktop
hexasciibytearray
15 Posts 8 Posters 33.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.
  • S Offline
    S Offline
    SGaist
    Lifetime Qt Champion
    wrote on 26 Nov 2015, 22:18 last edited by aha_1980
    #2

    Hi,

    Do you mean something like QByteArray::fromHex ?

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    K 1 Reply Last reply 27 Nov 2015, 08:34
    2
    • S SGaist
      26 Nov 2015, 22:18

      Hi,

      Do you mean something like QByteArray::fromHex ?

      K Offline
      K Offline
      kahlenberg
      wrote on 27 Nov 2015, 08:34 last edited by
      #3

      @SGaist Thanks for answer, almost that. But it takes a QByteArray as parameter. I have a string. How can I convert a string to a QByteArray ? Every two character in my string represents a byte.

      1 Reply Last reply
      0
      • S Offline
        S Offline
        SGaist
        Lifetime Qt Champion
        wrote on 27 Nov 2015, 08:39 last edited by
        #4

        Do you mean a std::string or "MyHexString" ?

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        K 1 Reply Last reply 27 Nov 2015, 08:56
        0
        • S SGaist
          27 Nov 2015, 08:39

          Do you mean a std::string or "MyHexString" ?

          K Offline
          K Offline
          kahlenberg
          wrote on 27 Nov 2015, 08:56 last edited by
          #5

          @SGaist QString MyHexString = "E00200BA9EFC00AC";

          1 Reply Last reply
          0
          • S Offline
            S Offline
            SGaist
            Lifetime Qt Champion
            wrote on 27 Nov 2015, 09:02 last edited by
            #6

            Then why not do as the example in the doc suggests:

            QByteArray myHexArray = QByteArray::fromHex("E00200BA9EFC00AC");
            

            ?

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            K 1 Reply Last reply 27 Nov 2015, 09:34
            2
            • S SGaist
              27 Nov 2015, 09:02

              Then why not do as the example in the doc suggests:

              QByteArray myHexArray = QByteArray::fromHex("E00200BA9EFC00AC");
              

              ?

              K Offline
              K Offline
              kahlenberg
              wrote on 27 Nov 2015, 09:34 last edited by
              #7

              @SGaist
              Becausue fromHex accepts QByteArray as parameter, I have QString. Later I will get this string from UI element, QLineEdit
              (ui->cmdToWrite->text(), this is QString)

              QString MyHexString = "E00200BA9EFC00AC";
              QByteArray cmd = QByteArray::fromHex(MyHexString);
              

              Error message:
              D:\Qt\Projects\Widget\mainwindow.cpp:40: error: no matching function for call to 'QByteArray::fromHex(QString&)'
              QByteArray cmd = QByteArray::fromHex(MyHexString);
              ^

              K 1 Reply Last reply 20 Aug 2020, 14:20
              0
              • K kahlenberg
                26 Nov 2015, 22:16

                Hi,
                I try to convert a string, containing hex chars only, to a byte array. I could do it in C but in Qt I did not find any solution :) . Yes it is easy and trivial but really I need help.

                Lets say I have a string like "E00200BA9EFC00AC", how can I convert it to an array like this:

                bytearray[0]=0xE0
                bytearray[1]=0x02
                bytearray[2]=0x00
                bytearray[3]=0xBA
                ....
                bytearray[7]=0xAC

                J Offline
                J Offline
                jduran_gm
                wrote on 27 Nov 2015, 09:40 last edited by
                #8

                @kahlenberg Take a look to this member function:

                QByteArray QByteArray::fromHex(const QByteArray & hexEncoded)

                Joaquim Duran

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on 27 Nov 2015, 09:43 last edited by
                  #9

                  Again, why create a QString ? Just use QByteArray directly or if you really really want a QString, use e.g. toLatin1

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  K 1 Reply Last reply 27 Nov 2015, 11:14
                  4
                  • S SGaist
                    27 Nov 2015, 09:43

                    Again, why create a QString ? Just use QByteArray directly or if you really really want a QString, use e.g. toLatin1

                    K Offline
                    K Offline
                    kahlenberg
                    wrote on 27 Nov 2015, 11:14 last edited by
                    #10

                    @SGaist Oh, thank you very much, toLatin1() solved my problem. I didn't see it :) Thanks again.

                    R 1 Reply Last reply 19 Aug 2020, 19:45
                    0
                    • K kahlenberg
                      27 Nov 2015, 11:14

                      @SGaist Oh, thank you very much, toLatin1() solved my problem. I didn't see it :) Thanks again.

                      R Offline
                      R Offline
                      rmk1842
                      wrote on 19 Aug 2020, 19:45 last edited by
                      #11

                      @kahlenberg : could you post the code? I am in the same situation.

                      1 Reply Last reply
                      0
                      • K kahlenberg
                        27 Nov 2015, 09:34

                        @SGaist
                        Becausue fromHex accepts QByteArray as parameter, I have QString. Later I will get this string from UI element, QLineEdit
                        (ui->cmdToWrite->text(), this is QString)

                        QString MyHexString = "E00200BA9EFC00AC";
                        QByteArray cmd = QByteArray::fromHex(MyHexString);
                        

                        Error message:
                        D:\Qt\Projects\Widget\mainwindow.cpp:40: error: no matching function for call to 'QByteArray::fromHex(QString&)'
                        QByteArray cmd = QByteArray::fromHex(MyHexString);
                        ^

                        K Offline
                        K Offline
                        KroMignon
                        wrote on 20 Aug 2020, 14:20 last edited by KroMignon
                        #12

                        @rmk1842

                        QString MyHexString = "E00200BA9EFC00AC";
                        QByteArray cmd = QByteArray::fromHex(MyHexString);

                        You simply have to use QString::toLatin1():

                        QString MyHexString = "E00200BA9EFC00AC";
                        QByteArray cmd = QByteArray::fromHex(MyHexString.toLatin1());
                        

                        It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                        1 Reply Last reply
                        0
                        • fcarneyF Offline
                          fcarneyF Offline
                          fcarney
                          wrote on 20 Aug 2020, 14:26 last edited by fcarney
                          #13

                          Like @SGaist said.
                          But QByteArray takes a string constant. I am using it is code right now. Extensively.

                          C++ is a perfectly valid school of magic.

                          1 Reply Last reply
                          0
                          • M Offline
                            M Offline
                            mganesh
                            wrote on 22 Mar 2021, 11:24 last edited by
                            #14
                                  monitorCommand = "020400000006703B";
                                QByteArray data_to_transmit = QByteArray::fromHex(monitorCommand.toUtf8());
                            

                            qDebug() << monitorCommand << data_to_transmit;

                            it gives "020400000006703B for monitorcommond
                            for data_to_transmit "\x02\x04\x00\f\x00\x06\xB0""8"
                            but its not correctly converted to hex

                            Christian EhrlicherC 1 Reply Last reply 22 Mar 2021, 12:00
                            0
                            • M mganesh
                              22 Mar 2021, 11:24
                                    monitorCommand = "020400000006703B";
                                  QByteArray data_to_transmit = QByteArray::fromHex(monitorCommand.toUtf8());
                              

                              qDebug() << monitorCommand << data_to_transmit;

                              it gives "020400000006703B for monitorcommond
                              for data_to_transmit "\x02\x04\x00\f\x00\x06\xB0""8"
                              but its not correctly converted to hex

                              Christian EhrlicherC Online
                              Christian EhrlicherC Online
                              Christian Ehrlicher
                              Lifetime Qt Champion
                              wrote on 22 Mar 2021, 12:00 last edited by
                              #15

                              @mganesh This works fine for me. Your output can not match on what you've written. Please post all your test code

                              int main(int argc, char **argv)
                              {
                                QCoreApplication app(argc, argv);
                                QString monitorCommand = "020400000006703B";
                                QByteArray data_to_transmit = QByteArray::fromHex(monitorCommand.toUtf8());
                                qDebug() << monitorCommand << data_to_transmit;
                                return 0;
                              }
                              

                              -->
                              "020400000006703B" "\x02\x04\x00\x00\x00\x06p;"

                              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
                              0

                              • Login

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