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. Converting Qbyte array to array and to double
Qt 6.11 is out! See what's new in the release blog

Converting Qbyte array to array and to double

Scheduled Pinned Locked Moved Unsolved General and Desktop
14 Posts 3 Posters 1.3k 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.
  • D dziko147

    Hello , I get some data from a CAN Bus . So my data is some float and some double .

    What I did is :

    float myData;
    double myDatadouble;
    
                       QDataStream stream(data);
                        qDebug() << data.size() << " Data Data&size" ;
                       
                        if (data.size()== 5){
                           quint8 byte;
                            stream >> byte; // skip first byte
                  stream.setFloatingPointPrecision(QDataStream::SinglePrecision);
                            stream >> myData; // read data
                            qDebug()  << "this is data"<< myData ;
                            QString DatatoString =QString::number(myData);
                            Outputs[i]=DatatoString;
                        qDebug() << "In outputs data" << Outputs[i];
                        }
    else {
    
                       quint8 byte;
                        stream >> byte; // skip first byte
                            stream.setFloatingPointPrecision(QDataStream::DoublePrecision);
                         stream >> myDatadouble; // read data
                        qDebug()  << "this is data"<< myDatadouble;
                        QString DatatoString =QString::number(myDatadouble);
                        Outputs[i]=DatatoString;
                        qDebug() << "In outputs data" << Outputs[i];
                        }              
                       
    
    

    I get only float converted , the double is usually "0" .

    thankyou

    artwawA Offline
    artwawA Offline
    artwaw
    wrote on last edited by
    #2

    @dziko147 in the else part of the case you do QString::number on the float instead of the double?

    Plus, using QString::number you can control precision on the double too https://doc.qt.io/qt-5/qstring.html#number-6

    For more information please re-read.

    Kind Regards,
    Artur

    1 Reply Last reply
    0
    • D Offline
      D Offline
      dziko147
      wrote on last edited by
      #3

      @artwaw thanks for your reply . Ok I will remove the Qstring .

      Also I get unreadable data like " 3.13891e-43 " for a array "0xff000000e0" .

      I use a online converter and give the same value .

      But there is a way to make it readable .

      thank you

      artwawA 1 Reply Last reply
      0
      • D dziko147

        @artwaw thanks for your reply . Ok I will remove the Qstring .

        Also I get unreadable data like " 3.13891e-43 " for a array "0xff000000e0" .

        I use a online converter and give the same value .

        But there is a way to make it readable .

        thank you

        artwawA Offline
        artwawA Offline
        artwaw
        wrote on last edited by
        #4

        @dziko147
        again: in the "else" part you have

        qDebug()  << "this is data"<< myDatadouble;
        QString DatatoString =QString::number(myData);
        

        where I think you should have

        qDebug()  << "this is data"<< myDatadouble;
        QString DatatoString =QString::number(myDatadouble);
        

        since you do not even set myData in that part. Hence your string contains rubbish, you don't even initialise the variable.

        For more information please re-read.

        Kind Regards,
        Artur

        1 Reply Last reply
        0
        • D Offline
          D Offline
          dziko147
          wrote on last edited by
          #5

          @artwaw yes in my code I have

          qDebug()  << "this is data"<< myDatadouble;
          QString DatatoString =QString::number(myDatadouble);
          

          just when i copying it i I was mistaken .

          I update my topic :)

          1 Reply Last reply
          0
          • D dziko147

            Hello , I get some data from a CAN Bus . So my data is some float and some double .

            What I did is :

            float myData;
            double myDatadouble;
            
                               QDataStream stream(data);
                                qDebug() << data.size() << " Data Data&size" ;
                               
                                if (data.size()== 5){
                                   quint8 byte;
                                    stream >> byte; // skip first byte
                          stream.setFloatingPointPrecision(QDataStream::SinglePrecision);
                                    stream >> myData; // read data
                                    qDebug()  << "this is data"<< myData ;
                                    QString DatatoString =QString::number(myData);
                                    Outputs[i]=DatatoString;
                                qDebug() << "In outputs data" << Outputs[i];
                                }
            else {
            
                               quint8 byte;
                                stream >> byte; // skip first byte
                                    stream.setFloatingPointPrecision(QDataStream::DoublePrecision);
                                 stream >> myDatadouble; // read data
                                qDebug()  << "this is data"<< myDatadouble;
                                QString DatatoString =QString::number(myDatadouble);
                                Outputs[i]=DatatoString;
                                qDebug() << "In outputs data" << Outputs[i];
                                }              
                               
            
            

            I get only float converted , the double is usually "0" .

            thankyou

            CP71C Offline
            CP71C Offline
            CP71
            wrote on last edited by CP71
            #6

            @dziko147
            Hi,
            you have checked only if (data.size()== 5) in first if,
            Did you check in else that the data size is correct?
            I think no

            1 Reply Last reply
            0
            • D Offline
              D Offline
              dziko147
              wrote on last edited by
              #7

              @CP71 yes it return a size :8 byte

              CP71C 1 Reply Last reply
              0
              • D dziko147

                @CP71 yes it return a size :8 byte

                CP71C Offline
                CP71C Offline
                CP71
                wrote on last edited by
                #8

                @dziko147
                8! so doesn't you have a one spare byte in else as in float case?

                1 Reply Last reply
                0
                • D Offline
                  D Offline
                  dziko147
                  wrote on last edited by dziko147
                  #9

                  @CP71 said in Converting Qbyte array to array and to double:

                  8! so doesn't you have a one spare byte in else as in float case?

                  no I usually get frame started with FF .

                  I mean than in the case of a float I get "FF + 4Byte data"

                  In the case of a Double I get "FF +7Byte data "

                  and here I skip the first byte

                                     quint8 byte;
                                      stream >> byte; // skip first byte
                  
                  CP71C 1 Reply Last reply
                  0
                  • D dziko147

                    @CP71 said in Converting Qbyte array to array and to double:

                    8! so doesn't you have a one spare byte in else as in float case?

                    no I usually get frame started with FF .

                    I mean than in the case of a float I get "FF + 4Byte data"

                    In the case of a Double I get "FF +7Byte data "

                    and here I skip the first byte

                                       quint8 byte;
                                        stream >> byte; // skip first byte
                    
                    CP71C Offline
                    CP71C Offline
                    CP71
                    wrote on last edited by CP71
                    #10

                    @dziko147 said in Converting Qbyte array to array and to double:

                    In the case of a Double I get "FF +7Byte data "

                    Sorry, but in double case I think you'd send 0xFF+8bytes, anyway I think your application tries read a double at 8 bytes

                    1 Reply Last reply
                    0
                    • D Offline
                      D Offline
                      dziko147
                      wrote on last edited by
                      #11

                      @CP71 you are right :D

                      1 Reply Last reply
                      0
                      • D Offline
                        D Offline
                        dziko147
                        wrote on last edited by
                        #12

                        @CP71 now how can make it readable .
                        For example I get " 3.13891e-43 " for a array "0xff000000e0" .
                        please

                        CP71C 1 Reply Last reply
                        0
                        • D dziko147

                          @CP71 now how can make it readable .
                          For example I get " 3.13891e-43 " for a array "0xff000000e0" .
                          please

                          CP71C Offline
                          CP71C Offline
                          CP71
                          wrote on last edited by
                          #13

                          @dziko147
                          It is wrong!

                          https://www.binaryconvert.com/convert_double.html

                          As last time, I must go.
                          Sorry, bye

                          1 Reply Last reply
                          0
                          • D Offline
                            D Offline
                            dziko147
                            wrote on last edited by
                            #14

                            @CP71 as u like bro good bye

                            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