Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. How do I pack to integer values in a double ?

How do I pack to integer values in a double ?

Scheduled Pinned Locked Moved C / C++ / MFC
questionhelp
13 Posts 4 Posters 0 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.
  • A Offline
    A Offline
    Astricks
    wrote on last edited by
    #1

    How do I pack two integer values in a double ? i.e int x=1000; int y=2000; double z; now I want the first four bytes to be occupied by x and the next 4 by y in Z How do I do that? any shift operators would help? please tell me how do I pack & unpack it?

    T D 2 Replies Last reply
    0
    • A Astricks

      How do I pack two integer values in a double ? i.e int x=1000; int y=2000; double z; now I want the first four bytes to be occupied by x and the next 4 by y in Z How do I do that? any shift operators would help? please tell me how do I pack & unpack it?

      T Offline
      T Offline
      toxcct
      wrote on last edited by
      #2

      what about using union ?

      union U {
      double _d;
      int _i[2];
      };


      TOXCCT >>> GEII power

      [VisualCalc 3.0 updated ][Flags Beginner's Guide new! ]

      A 1 Reply Last reply
      0
      • T toxcct

        what about using union ?

        union U {
        double _d;
        int _i[2];
        };


        TOXCCT >>> GEII power

        [VisualCalc 3.0 updated ][Flags Beginner's Guide new! ]

        A Offline
        A Offline
        Astricks
        wrote on last edited by
        #3

        Thank you for your reply sir, But I do not want an union :(. The matter is, You have a function like this. Imagine you cannot change it's params. It's built by someone and it's used in numerous instances. void testDouble(double d) { cout< Now you say , testDouble(2143250); it prints 2143250. Now I want to send two integer values to this function for other reason. I have two numbres, 1000, 2000. these are ints so takes only 4 bytes. `double 00000000000000000000.....64 now 0000000..32 | 0000.......32 is my idea.` But how do I do that? So that in the function, I can do like, void testDouble(double d) { cout<<(HIGHER32)d; cout<<(LOWER32)d; } get me now?

        T C 2 Replies Last reply
        0
        • A Astricks

          Thank you for your reply sir, But I do not want an union :(. The matter is, You have a function like this. Imagine you cannot change it's params. It's built by someone and it's used in numerous instances. void testDouble(double d) { cout< Now you say , testDouble(2143250); it prints 2143250. Now I want to send two integer values to this function for other reason. I have two numbres, 1000, 2000. these are ints so takes only 4 bytes. `double 00000000000000000000.....64 now 0000000..32 | 0000.......32 is my idea.` But how do I do that? So that in the function, I can do like, void testDouble(double d) { cout<<(HIGHER32)d; cout<<(LOWER32)d; } get me now?

          T Offline
          T Offline
          toxcct
          wrote on last edited by
          #4

          wait, you want to merge 2 ints into a double, or split a double into 2 ints ? BTW be careful, sizeof(int) == 4 only on 32 bits plateforms !


          TOXCCT >>> GEII power

          [VisualCalc 3.0 updated ][Flags Beginner's Guide new! ]

          A 1 Reply Last reply
          0
          • T toxcct

            wait, you want to merge 2 ints into a double, or split a double into 2 ints ? BTW be careful, sizeof(int) == 4 only on 32 bits plateforms !


            TOXCCT >>> GEII power

            [VisualCalc 3.0 updated ][Flags Beginner's Guide new! ]

            A Offline
            A Offline
            Astricks
            wrote on last edited by
            #5

            Yes exactly, but I'm happy that sizeof(int) is 4 :) that enough to keep a 4 bytes data :laugh:

            toxcct wrote:

            you want to merge 2 ints into a double, or split a double into 2 ints ?

            Yes. I want this. May be you can try with shift operators :rolleyes:

            1 Reply Last reply
            0
            • A Astricks

              Thank you for your reply sir, But I do not want an union :(. The matter is, You have a function like this. Imagine you cannot change it's params. It's built by someone and it's used in numerous instances. void testDouble(double d) { cout< Now you say , testDouble(2143250); it prints 2143250. Now I want to send two integer values to this function for other reason. I have two numbres, 1000, 2000. these are ints so takes only 4 bytes. `double 00000000000000000000.....64 now 0000000..32 | 0000.......32 is my idea.` But how do I do that? So that in the function, I can do like, void testDouble(double d) { cout<<(HIGHER32)d; cout<<(LOWER32)d; } get me now?

              C Offline
              C Offline
              Chris Losinger
              wrote on last edited by
              #6

              int main(int argc, char* argv[])
              {
              __int32 i[2];
              i[0] = 1000;
              i[1] = 2000;

              double d = 0;
              d = \*(double\*)&i\[0\];
              
              printf("%f\\n", d);
              
              \_\_int32 \*o;
              o = (\_\_int32\*)&d;
              printf("%d %d\\n", o\[0\], o\[1\]);
              
              return 0;
              

              }

              of course, anyone doing something like this would end up in the Daily WTF, for sure.

              image processing | blogging

              A 2 Replies Last reply
              0
              • A Astricks

                How do I pack two integer values in a double ? i.e int x=1000; int y=2000; double z; now I want the first four bytes to be occupied by x and the next 4 by y in Z How do I do that? any shift operators would help? please tell me how do I pack & unpack it?

                D Offline
                D Offline
                David Crow
                wrote on last edited by
                #7

                Is this what you are after:

                   int             int
                

                /-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-\
                | | | | | | | | | | | | | | | | |
                \-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-/
                double


                "Approved Workmen Are Not Ashamed" - 2 Timothy 2:15

                "Judge not by the eye but by the heart." - Native American Proverb

                T A 2 Replies Last reply
                0
                • D David Crow

                  Is this what you are after:

                     int             int
                  

                  /-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-\
                  | | | | | | | | | | | | | | | | |
                  \-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-/
                  double


                  "Approved Workmen Are Not Ashamed" - 2 Timothy 2:15

                  "Judge not by the eye but by the heart." - Native American Proverb

                  T Offline
                  T Offline
                  toxcct
                  wrote on last edited by
                  #8

                  lol, David, are you moking at newbies ? :rolleyes:


                  TOXCCT >>> GEII power

                  [VisualCalc 3.0 updated ][Flags Beginner's Guide new! ]

                  D 1 Reply Last reply
                  0
                  • C Chris Losinger

                    int main(int argc, char* argv[])
                    {
                    __int32 i[2];
                    i[0] = 1000;
                    i[1] = 2000;

                    double d = 0;
                    d = \*(double\*)&i\[0\];
                    
                    printf("%f\\n", d);
                    
                    \_\_int32 \*o;
                    o = (\_\_int32\*)&d;
                    printf("%d %d\\n", o\[0\], o\[1\]);
                    
                    return 0;
                    

                    }

                    of course, anyone doing something like this would end up in the Daily WTF, for sure.

                    image processing | blogging

                    A Offline
                    A Offline
                    Astricks
                    wrote on last edited by
                    #9

                    I'll test this & tell you. Thanks. BRB

                    1 Reply Last reply
                    0
                    • T toxcct

                      lol, David, are you moking at newbies ? :rolleyes:


                      TOXCCT >>> GEII power

                      [VisualCalc 3.0 updated ][Flags Beginner's Guide new! ]

                      D Offline
                      D Offline
                      David Crow
                      wrote on last edited by
                      #10

                      Moking? Do you mean mocking? No, I was just trying to clarify what the intent was by using a visual.


                      "Approved Workmen Are Not Ashamed" - 2 Timothy 2:15

                      "Judge not by the eye but by the heart." - Native American Proverb

                      T 1 Reply Last reply
                      0
                      • D David Crow

                        Is this what you are after:

                           int             int
                        

                        /-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-\
                        | | | | | | | | | | | | | | | | |
                        \-+-+-+-+-+-+-+-|-+-+-+-+-+-+-+-/
                        double


                        "Approved Workmen Are Not Ashamed" - 2 Timothy 2:15

                        "Judge not by the eye but by the heart." - Native American Proverb

                        A Offline
                        A Offline
                        Astricks
                        wrote on last edited by
                        #11

                        Yes David.

                        1 Reply Last reply
                        0
                        • D David Crow

                          Moking? Do you mean mocking? No, I was just trying to clarify what the intent was by using a visual.


                          "Approved Workmen Are Not Ashamed" - 2 Timothy 2:15

                          "Judge not by the eye but by the heart." - Native American Proverb

                          T Offline
                          T Offline
                          toxcct
                          wrote on last edited by
                          #12

                          DavidCrow wrote:

                          Moking? Do you mean mocking?

                          indeed i was. but that's true also that pictures are more clear than words sometimes...


                          TOXCCT >>> GEII power

                          [VisualCalc 3.0 updated ][Flags Beginner's Guide new! ]

                          1 Reply Last reply
                          0
                          • C Chris Losinger

                            int main(int argc, char* argv[])
                            {
                            __int32 i[2];
                            i[0] = 1000;
                            i[1] = 2000;

                            double d = 0;
                            d = \*(double\*)&i\[0\];
                            
                            printf("%f\\n", d);
                            
                            \_\_int32 \*o;
                            o = (\_\_int32\*)&d;
                            printf("%d %d\\n", o\[0\], o\[1\]);
                            
                            return 0;
                            

                            }

                            of course, anyone doing something like this would end up in the Daily WTF, for sure.

                            image processing | blogging

                            A Offline
                            A Offline
                            Astricks
                            wrote on last edited by
                            #13

                            Chris, that worked thanks. Now I'm happy I have a way. But if you can still get me a way that will never take part in WTFs that'd be excellent.

                            1 Reply Last reply
                            0
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • World
                            • Users
                            • Groups