1. 程式人生 > >C++ 按照位元組逆序

C++ 按照位元組逆序

C++ 按照位元組逆序

開發過程中遇到一個新舊相容問題,在WriteInt到底層時需要按照位元組逆序,並且適配了64位和32位。


演算法核心思想

  • 按位運算

原始碼如下

template<typename T>
T reverseBytes64(const T & val, int size = 8)
{
    T dest = 0x0000000000000000;
    T head = 0xFFFFFFFFFFFFFFFF;
    for (int i = 0; i < size; i++) {
        T bitVal = (head >> (i * 8
)) & val; T tmp = bitVal >> ((size - 1 - i) * 8); dest = dest | tmp << (i * 8); } return dest; } template<typename T> T reverseBytes32(const T & val, int size = 4) { T dest = 0x00000000; T head = 0xFFFFFFFF; for (int i = 0; i < size; i++) { T
bitVal = (head >> (i * 8)) & val; T tmp = bitVal >> ((size - 1 - i) * 8); dest = dest | tmp << (i * 8); } return dest; }