How do I convert between big-endian and little-endian values in C++?

前端 未结 30 2538
难免孤独
难免孤独 2020-11-21 23:18

How do I convert between big-endian and little-endian values in C++?

EDIT: For clarity, I have to translate binary data (double-precision floating point values and 3

30条回答
  •  被撕碎了的回忆
    2020-11-21 23:58

    The procedure for going from big-endian to little-endian is the same as going from little-endian to big-endian.

    Here's some example code:

    void swapByteOrder(unsigned short& us)
    {
        us = (us >> 8) |
             (us << 8);
    }
    
    void swapByteOrder(unsigned int& ui)
    {
        ui = (ui >> 24) |
             ((ui<<8) & 0x00FF0000) |
             ((ui>>8) & 0x0000FF00) |
             (ui << 24);
    }
    
    void swapByteOrder(unsigned long long& ull)
    {
        ull = (ull >> 56) |
              ((ull<<40) & 0x00FF000000000000) |
              ((ull<<24) & 0x0000FF0000000000) |
              ((ull<<8) & 0x000000FF00000000) |
              ((ull>>8) & 0x00000000FF000000) |
              ((ull>>24) & 0x0000000000FF0000) |
              ((ull>>40) & 0x000000000000FF00) |
              (ull << 56);
    }
    

提交回复
热议问题