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. Converting 4 Byte array into float using little endianness
Forum Updated to NodeBB v4.3 + New Features

Converting 4 Byte array into float using little endianness

Scheduled Pinned Locked Moved Solved Mobile and Embedded
31 Posts 6 Posters 8.2k 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.
  • aha_1980A aha_1980

    @vicksoccer

    As said before, it is not possible to store binary data in a QString, while it is possible to do so in a QByteArray.

    V Offline
    V Offline
    vicksoccer
    wrote on last edited by
    #6

    @aha_1980 Thanks for your reply here I am trying to decode .slc file, sorry I am little bit confused,Its not exaclty binary file, but includes number of floating values...

    QFile slcFile(fileName); // filename is path of file.
    QTextStream in(&slcFile);
    QString slcText = in.readAll();

    I am reading all data of file and stored into string.. then trying to decode this . I have decode half file as per this above syntax successfully .. string data is little endian/Big endian scheme.

    K S jsulmJ 3 Replies Last reply
    0
    • V vicksoccer

      @aha_1980 Thanks for your reply here I am trying to decode .slc file, sorry I am little bit confused,Its not exaclty binary file, but includes number of floating values...

      QFile slcFile(fileName); // filename is path of file.
      QTextStream in(&slcFile);
      QString slcText = in.readAll();

      I am reading all data of file and stored into string.. then trying to decode this . I have decode half file as per this above syntax successfully .. string data is little endian/Big endian scheme.

      K Offline
      K Offline
      koahnig
      wrote on last edited by koahnig
      #7

      @vicksoccer

      See http://doc.qt.io/qt-5/qstring.html#details you will find this text

      *The QString class provides a Unicode character string.

      QString stores a string of 16-bit QChars, where each QChar corresponds to one UTF-16 code unit. (Unicode characters with code values above 65535 are stored using surrogate pairs, i.e., two consecutive QChars.)*

      You would need to read byte by byte from QDatastream. Therefore, you need to follow @aha_1980's advice.

      Vote the answer(s) that helped you to solve your issue(s)

      1 Reply Last reply
      2
      • V vicksoccer

        @aha_1980 Thanks for your reply here I am trying to decode .slc file, sorry I am little bit confused,Its not exaclty binary file, but includes number of floating values...

        QFile slcFile(fileName); // filename is path of file.
        QTextStream in(&slcFile);
        QString slcText = in.readAll();

        I am reading all data of file and stored into string.. then trying to decode this . I have decode half file as per this above syntax successfully .. string data is little endian/Big endian scheme.

        S Offline
        S Offline
        Stoyan
        wrote on last edited by
        #8

        @vicksoccer
        What is exact format of these floating values in the file?
        If they are in binary format: "5B 49 BE 8B", then you have to use QDataStream instead QTextStream and store data in QByteArray instead QString. Or you can read data directly from the file into float:

        QFile slcFile(fileName);
        slcFile.open(QIODevice::ReadOnly);
        QDataStream in(&slcFile);
        in.setByteOrder(QDataStream::LittleEndian);
        in.setFloatingPointPrecision(QDataStream::SinglePrecision);
        float f;
        in >> f;
        ...
        
        1 Reply Last reply
        4
        • V vicksoccer

          @aha_1980 Thanks for your reply here I am trying to decode .slc file, sorry I am little bit confused,Its not exaclty binary file, but includes number of floating values...

          QFile slcFile(fileName); // filename is path of file.
          QTextStream in(&slcFile);
          QString slcText = in.readAll();

          I am reading all data of file and stored into string.. then trying to decode this . I have decode half file as per this above syntax successfully .. string data is little endian/Big endian scheme.

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #9

          @vicksoccer You should rather use http://doc.qt.io/qt-5/qdatastream.html to read/write binary data.

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

          1 Reply Last reply
          3
          • V Offline
            V Offline
            vicksoccer
            wrote on last edited by
            #10

            Thanks all for your kind support!!!
            Actually I am reading file which includes AScii characters. I have read all data from file and stored into QString.

            QFile slcFile(fileName); // filename is path of file.
            QTextStream in(&slcFile);
            QString slcText = in.readAll();

            yes I understood I can store data as QBytearray also. After storing I have process string data, But while reading data slcText does not include "\n" after end of line in QFIle. If I had open original file with texteditor (notepad++) then I was able see location of end of line .. but for many end lines slcText does not include "\n" and I need resulted string with "\n" to process. It happens same with QBytearray. If I get reading all data with "\n" my problem will be solved. Any suggestions for this...

            jsulmJ aha_1980A 2 Replies Last reply
            0
            • V vicksoccer

              Thanks all for your kind support!!!
              Actually I am reading file which includes AScii characters. I have read all data from file and stored into QString.

              QFile slcFile(fileName); // filename is path of file.
              QTextStream in(&slcFile);
              QString slcText = in.readAll();

              yes I understood I can store data as QBytearray also. After storing I have process string data, But while reading data slcText does not include "\n" after end of line in QFIle. If I had open original file with texteditor (notepad++) then I was able see location of end of line .. but for many end lines slcText does not include "\n" and I need resulted string with "\n" to process. It happens same with QBytearray. If I get reading all data with "\n" my problem will be solved. Any suggestions for this...

              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #11

              @vicksoccer said in Converting 4 Byte array into float using little endianness:

              Actually I am reading file which includes AScii characters

              Well, in your first post you wrote "I have to read binary data from file". This is confusing at least.
              So, lets make it clear: you are reading a text file - is that correct?
              You can read the file without QTextStream like shown here: http://doc.qt.io/qt-5/qfile.html

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

              V 1 Reply Last reply
              1
              • V vicksoccer

                Thanks all for your kind support!!!
                Actually I am reading file which includes AScii characters. I have read all data from file and stored into QString.

                QFile slcFile(fileName); // filename is path of file.
                QTextStream in(&slcFile);
                QString slcText = in.readAll();

                yes I understood I can store data as QBytearray also. After storing I have process string data, But while reading data slcText does not include "\n" after end of line in QFIle. If I had open original file with texteditor (notepad++) then I was able see location of end of line .. but for many end lines slcText does not include "\n" and I need resulted string with "\n" to process. It happens same with QBytearray. If I get reading all data with "\n" my problem will be solved. Any suggestions for this...

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

                @vicksoccer If your file is mixed text/binary, you should read it as binary and process the data yourself.

                Once it is converted to text only (QString), important information will be lost. So read as binary, and convert only the chunks that are known as text to QString.

                Regards

                Qt has to stay free or it will die.

                1 Reply Last reply
                1
                • jsulmJ jsulm

                  @vicksoccer said in Converting 4 Byte array into float using little endianness:

                  Actually I am reading file which includes AScii characters

                  Well, in your first post you wrote "I have to read binary data from file". This is confusing at least.
                  So, lets make it clear: you are reading a text file - is that correct?
                  You can read the file without QTextStream like shown here: http://doc.qt.io/qt-5/qfile.html

                  V Offline
                  V Offline
                  vicksoccer
                  wrote on last edited by
                  #13

                  @jsulm Sorry for the last post but yes I am reading Text file and its missing "\n" character at the end of line in resulted string data..thats the issue now

                  jsulmJ 1 Reply Last reply
                  0
                  • V vicksoccer

                    @jsulm Sorry for the last post but yes I am reading Text file and its missing "\n" character at the end of line in resulted string data..thats the issue now

                    jsulmJ Offline
                    jsulmJ Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on last edited by
                    #14

                    @vicksoccer Check the link I posted...

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

                    V 1 Reply Last reply
                    0
                    • jsulmJ jsulm

                      @vicksoccer Check the link I posted...

                      V Offline
                      V Offline
                      vicksoccer
                      wrote on last edited by
                      #15

                      @jsulm I tried both using stream and without stream also but still getting same issue. is there any other way to read file data with endline as QString or QBytearray ..

                      jsulmJ 1 Reply Last reply
                      0
                      • V vicksoccer

                        @jsulm I tried both using stream and without stream also but still getting same issue. is there any other way to read file data with endline as QString or QBytearray ..

                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by jsulm
                        #16

                        @vicksoccer If the file really contains \n then you will get them when reading. How do you know it does not read them?
                        Also if you want read line by line use readLine().

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

                        V 1 Reply Last reply
                        0
                        • jsulmJ jsulm

                          @vicksoccer If the file really contains \n then you will get them when reading. How do you know it does not read them?
                          Also if you want read line by line use readLine().

                          V Offline
                          V Offline
                          vicksoccer
                          wrote on last edited by vicksoccer
                          #17

                          @jsulm I have opened original file with texteditor(notepad++) there I can see data line by line..
                          But after reading file with above qt syntax the resulted QString or Qbytearray does not contain "\n" character at end of the line.
                          I have tried with readline() also but I am getting truncated string at wrong location ideally it comes at end line..
                          here my data is (opened in notpad++)
                          0_1545123421025_3.PNG
                          this is what I am getting in QString after readall() 0_1545123560600_4.PNG
                          here I am expecting "\n" character after index of 540..

                          jsulmJ kshegunovK 2 Replies Last reply
                          0
                          • V vicksoccer

                            @jsulm I have opened original file with texteditor(notepad++) there I can see data line by line..
                            But after reading file with above qt syntax the resulted QString or Qbytearray does not contain "\n" character at end of the line.
                            I have tried with readline() also but I am getting truncated string at wrong location ideally it comes at end line..
                            here my data is (opened in notpad++)
                            0_1545123421025_3.PNG
                            this is what I am getting in QString after readall() 0_1545123560600_4.PNG
                            here I am expecting "\n" character after index of 540..

                            jsulmJ Offline
                            jsulmJ Offline
                            jsulm
                            Lifetime Qt Champion
                            wrote on last edited by
                            #18

                            @vicksoccer Can you show exact code you use to read the file?

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

                            V 1 Reply Last reply
                            0
                            • jsulmJ jsulm

                              @vicksoccer Can you show exact code you use to read the file?

                              V Offline
                              V Offline
                              vicksoccer
                              wrote on last edited by
                              #19

                              @jsulm here my code is for reading file

                              QFile slcFile(fileName); //path of the file
                              if(!slcFile.open(QIODevice::ReadOnly | QIODevice::Text))
                              {
                              showStatus("Unable to open the file\n"); //MessageBOx
                              return;
                              }
                              QTextStream in(&slcFile);
                              QString slcText = in.readAll(); //Reading data as string

                              aha_1980A 1 Reply Last reply
                              0
                              • V vicksoccer

                                @jsulm here my code is for reading file

                                QFile slcFile(fileName); //path of the file
                                if(!slcFile.open(QIODevice::ReadOnly | QIODevice::Text))
                                {
                                showStatus("Unable to open the file\n"); //MessageBOx
                                return;
                                }
                                QTextStream in(&slcFile);
                                QString slcText = in.readAll(); //Reading data as string

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

                                @vicksoccer And do you have an example for such a file?

                                Also, wasn't you question about binary float representation? How does that fit with a text file?

                                Qt has to stay free or it will die.

                                V 1 Reply Last reply
                                0
                                • V vicksoccer

                                  @jsulm I have opened original file with texteditor(notepad++) there I can see data line by line..
                                  But after reading file with above qt syntax the resulted QString or Qbytearray does not contain "\n" character at end of the line.
                                  I have tried with readline() also but I am getting truncated string at wrong location ideally it comes at end line..
                                  here my data is (opened in notpad++)
                                  0_1545123421025_3.PNG
                                  this is what I am getting in QString after readall() 0_1545123560600_4.PNG
                                  here I am expecting "\n" character after index of 540..

                                  kshegunovK Offline
                                  kshegunovK Offline
                                  kshegunov
                                  Moderators
                                  wrote on last edited by kshegunov
                                  #21

                                  @vicksoccer said in Converting 4 Byte array into float using little endianness:

                                  here I am expecting "\n" character after index of 540

                                  Why? From what I could see from your screenshots this is a binary file. The fact that you can see the text in it in your notepad++ doesn't make it a text file. If you don't trust me open an executable in notepad++ and you're going to see the static strings from your program (in one way or another).

                                  Read and abide by the Qt Code of Conduct

                                  1 Reply Last reply
                                  4
                                  • aha_1980A aha_1980

                                    @vicksoccer And do you have an example for such a file?

                                    Also, wasn't you question about binary float representation? How does that fit with a text file?

                                    V Offline
                                    V Offline
                                    vicksoccer
                                    wrote on last edited by
                                    #22

                                    @aha_1980 Previously I was stucked at conversion of 4 QBytearray into float thats why I am posted with this..I am truely new in
                                    this but now I am getting to know that my conversion is messed up due to skiping "\n" character at end line in receiving data as QString.
                                    here is sample .slc file
                                    https://www.dropbox.com/s/5bez93mdjr64v8x/open_display_SLC.zip

                                    aha_1980A 1 Reply Last reply
                                    0
                                    • V vicksoccer

                                      @aha_1980 Previously I was stucked at conversion of 4 QBytearray into float thats why I am posted with this..I am truely new in
                                      this but now I am getting to know that my conversion is messed up due to skiping "\n" character at end line in receiving data as QString.
                                      here is sample .slc file
                                      https://www.dropbox.com/s/5bez93mdjr64v8x/open_display_SLC.zip

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

                                      @vicksoccer By looking at your sample_ring2.slc, I doubt that is a text file. It looks like pure binary data for me.

                                      Qt has to stay free or it will die.

                                      V 2 Replies Last reply
                                      1
                                      • aha_1980A aha_1980

                                        @vicksoccer By looking at your sample_ring2.slc, I doubt that is a text file. It looks like pure binary data for me.

                                        V Offline
                                        V Offline
                                        vicksoccer
                                        wrote on last edited by
                                        #24

                                        @aha_1980 I have tried to read this file with

                                        @
                                        QFile slcFile(fileName); //path of the file
                                        if(!slcFile.open(QIODevice::ReadOnly | QIODevice::Text))
                                        {
                                        showStatus("Unable to open the file\n"); //MessageBOx
                                        return;
                                        }
                                        QByteArray slcText = slcFile.readAll();
                                        @
                                        But still missing "\n" in QBytearray in required index.
                                        I have take 4 data from QBytearray and convert into float value in loop so due missing "\n" index my conversion is messed up after performing some loop and does not getting expected float value.

                                        kshegunovK 1 Reply Last reply
                                        0
                                        • V vicksoccer

                                          @aha_1980 I have tried to read this file with

                                          @
                                          QFile slcFile(fileName); //path of the file
                                          if(!slcFile.open(QIODevice::ReadOnly | QIODevice::Text))
                                          {
                                          showStatus("Unable to open the file\n"); //MessageBOx
                                          return;
                                          }
                                          QByteArray slcText = slcFile.readAll();
                                          @
                                          But still missing "\n" in QBytearray in required index.
                                          I have take 4 data from QBytearray and convert into float value in loop so due missing "\n" index my conversion is messed up after performing some loop and does not getting expected float value.

                                          kshegunovK Offline
                                          kshegunovK Offline
                                          kshegunov
                                          Moderators
                                          wrote on last edited by
                                          #25

                                          @vicksoccer said in Converting 4 Byte array into float using little endianness:

                                          But still missing "\n" in QBytearray in required index.

                                          There's no such requirement when working with binary files. This is relevant only for text files, which you don't have in this case.

                                          Read and abide by the Qt Code of Conduct

                                          V 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