Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. QByteArray Initialization
Forum Updated to NodeBB v4.3 + New Features

QByteArray Initialization

Scheduled Pinned Locked Moved Solved Mobile and Embedded
17 Posts 7 Posters 20.6k 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.
  • M mostefa

    @vivekyuvan said in QByteArray Initialization:

    Hi @mostefa
    Its a test code I want to initalize array in normal C Standard type

    If I initialize qbyte array in Private Slot

    Ex

    QByteArray m_data={0x0c, 0x06, 0x04, 0x04, 0x02, 0x00};
    

    I got an error See the screen shot ![alt text](0_1505900733317_ErrorScreenShot.png image url)

    What if you change this line :

    QByteArray m_data={0x0c, 0x06, 0x04, 0x04, 0x02, 0x00};
    

    To this following line :

    QByteArray m_data = QByteArray("\x0c\x06\x04\x04\x02\x00",6);
    

    QByteArray Constructor

    V Offline
    V Offline
    vivekyuvan
    wrote on last edited by vivekyuvan
    #7

    Hi@mostefa

    QByteArray m_data = QByteArray("\x0c\x06\x04\x04\x02\x00",6);
    

    The Error message gone and I got the output thanks. But I want to send the array to emit signal? is that possible ? I am newbie to QT soft/Development guide me to resolve this problem

    M 1 Reply Last reply
    0
    • V vivekyuvan

      Hi@mostefa

      QByteArray m_data = QByteArray("\x0c\x06\x04\x04\x02\x00",6);
      

      The Error message gone and I got the output thanks. But I want to send the array to emit signal? is that possible ? I am newbie to QT soft/Development guide me to resolve this problem

      M Offline
      M Offline
      mostefa
      wrote on last edited by
      #8

      @vivekyuvan said in QByteArray Initialization:

      Hi@mostefa The Error message gone and I got the output thanks. But I want to send the array to emit signal? is that possible ? I am newbie to QT soft/Development guide me to resolve this problem

      You can actually send array in signal,

      let's say you have the following signal :

      void sendByteArray(QByteArray);// on your .h file
      

      inside your testArrayInitialization you can do something like this :

      QByteArray m_data = QByteArray("\x0c\x06\x04\x04\x02\x00",6);
      emit sendByteArray(m_data);
      

      If this is not what you want , can you explain what you want to do?

      1 Reply Last reply
      6
      • V Offline
        V Offline
        vivekyuvan
        wrote on last edited by
        #9

        @mostefa thanks The problem is solved

        1 Reply Last reply
        0
        • M Offline
          M Offline
          mostefa
          wrote on last edited by mostefa
          #10

          You are welcome =) , you can change the state of your post to solved

          1 Reply Last reply
          0
          • T Offline
            T Offline
            titan83
            wrote on last edited by
            #11

            What about:

            QByteArray text = QByteArray::fromHex("517420697320677265617421");
            
            jsulmJ 1 Reply Last reply
            1
            • T titan83

              What about:

              QByteArray text = QByteArray::fromHex("517420697320677265617421");
              
              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #12

              @titan83 This is just a string containing ASCII characters.
              It should be like @mostefa shown:

              QByteArray m_data = QByteArray("\x0c\x06\x04\x04\x02\x00",6);
              

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              V 1 Reply Last reply
              3
              • joaopagottoJ Offline
                joaopagottoJ Offline
                joaopagotto
                wrote on last edited by
                #13

                Hi friend, use this:

                #include <QCoreApplication>
                
                int main(int argc, char *argv[])
                {
                   QCoreApplication a(argc, argv);
                
                   QByteArray data;
                
                   data.append((char)0x0c);
                   data.append((char)0x06);
                   data.append((char)0x04);
                   data.append((char)0x04);
                   data.append((char)0x02);
                   data.append((char)0x00);
                   data.append((char)0xFF);
                
                   printf("%d\n", data.size());
                   printf("%s\n", data.toHex().toStdString().c_str());
                
                   return a.exec();   
                }
                
                jsulmJ 1 Reply Last reply
                0
                • joaopagottoJ joaopagotto

                  Hi friend, use this:

                  #include <QCoreApplication>
                  
                  int main(int argc, char *argv[])
                  {
                     QCoreApplication a(argc, argv);
                  
                     QByteArray data;
                  
                     data.append((char)0x0c);
                     data.append((char)0x06);
                     data.append((char)0x04);
                     data.append((char)0x04);
                     data.append((char)0x02);
                     data.append((char)0x00);
                     data.append((char)0xFF);
                  
                     printf("%d\n", data.size());
                     printf("%s\n", data.toHex().toStdString().c_str());
                  
                     return a.exec();   
                  }
                  
                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by jsulm
                  #14

                  @joaopagotto This is actually the same he already did. He asked for something like this or similar:

                  QByteArray m_data{0x0c, 0x06, 0x04, 0x04, 0x02, 0x00};
                  

                  Also there is no need to use printf in C++. Instead of

                  printf("%d\n", data.size());
                  

                  you can just write

                  qDebug() << data.size();
                  

                  or C++ without Qt

                  std::cout << data.size();
                  

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  2
                  • jsulmJ jsulm

                    @titan83 This is just a string containing ASCII characters.
                    It should be like @mostefa shown:

                    QByteArray m_data = QByteArray("\x0c\x06\x04\x04\x02\x00",6);
                    
                    V Offline
                    V Offline
                    vivekyuvan
                    wrote on last edited by vivekyuvan
                    #15
                    This post is deleted!
                    1 Reply Last reply
                    0
                    • aha_1980A Offline
                      aha_1980A Offline
                      aha_1980
                      Lifetime Qt Champion
                      wrote on last edited by
                      #16

                      @jsulm said in QByteArray Initialization:

                      @titan83 This is just a string containing ASCII characters.

                      Of course @titan83 has a point here. His string is made of ASCII characters, but he uses QByteArray::fromHex(). This may not be the fastest operation, but allows to read the data from UI or an ASCII file, for example.

                      Qt has to stay free or it will die.

                      1 Reply Last reply
                      0
                      • D Offline
                        D Offline
                        delverdl
                        wrote on last edited by
                        #17

                        You can basically use a C++11 initializer list the following way (I've added a char higher than 0x7f and initializtion by variables):

                        char        v1 = 0x06, v2 = 0x04;
                        QByteArray  ba(std::begin<char>({0x0c, v1, v2, v2, 0x02, 0x00, '\xf3'}), 7);
                        
                        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