您的位置:首页 > 其它

翻转64 32 16 位

2016-07-04 15:35 302 查看
#define Reverse64(val)    ((std::uint64_t) ( \

      (((std::uint64_t) (val) &                        \

    (std::uint64_t) (0x00000000000000ffU)) << 56) |    \

      (((std::uint64_t) (val) &                    \

    (std::uint64_t) (0x000000000000ff00U)) << 40) |    \

      (((std::uint64_t) (val) &                    \

    (std::uint64_t) (0x0000000000ff0000U)) << 24) |    \

      (((std::uint64_t) (val) &                    \

    (std::uint64_t) (0x00000000ff000000U)) <<  8) |    \

      (((std::uint64_t) (val) &                    \

    (std::uint64_t) (0x000000ff00000000U)) >>  8) |    \

      (((std::uint64_t) (val) &                    \

    (std::uint64_t) (0x0000ff0000000000U)) >> 24) |    \

      (((std::uint64_t) (val) &                    \

    (std::uint64_t) (0x00ff000000000000U)) >> 40) |    \

      (((std::uint64_t) (val) &                    \

    (std::uint64_t) (0xff00000000000000U)) >> 56)))

#define Reverse32(val)    ((std::uint32_t) ( \

(((std::uint64_t) (val) &                    \

(std::uint32_t) (0x000000ffU)) << 24) | \

(((std::uint32_t) (val) &                    \

(std::uint32_t) (0x0000ff00U)) << 8) | \

(((std::uint32_t) (val) &                    \

(std::uint32_t) (0x00ff0000U)) >> 8) | \

(((std::uint32_t) (val) &                    \

(std::uint32_t) (0xff000000U)) >> 24)))

#define Reverse16(val)    ((std::uint16_t) ( \

(((std::uint16_t) (val) &                    \

(std::uint16_t) (0x00ffU)) << 8) | \

(((std::uint16_t) (val) &                    \

(std::uint16_t) (0xff00U)) >> 8)))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: