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.8k 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 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
                  • F Offline
                    F 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