#include <iostream>
using namespace std;
typedef unsigned char BYTE;
typedef long long LONGLONG;
inline long SwapLong(const BYTE* pByte)
{
return (pByte[0] << 24) |
(pByte[1] << 16) |
(pByte[2] << 8) |
pByte[3];
}
inline LONGLONG SwapI64(const BYTE* pByte)
{
return ((LONGLONG)SwapLong(pByte)) << 32 |
SwapLong(pByte + 4);
}
int main( void )
{
long l = 0x01020304;
LONGLONG ll = 0x0102030405060708;
BYTE * pl = (BYTE*)&l;
BYTE * pll = (BYTE*)≪
cout<<(long)pl[0]<<endl;
cout<<(LONGLONG)pll[0]<<endl;
l = SwapLong(pl);
ll = SwapI64(pll);
cout<<(long)pl[0]<<endl;
cout<<(LONGLONG)pll[0]<<endl;
return 0;
}
本机字节序转网络字节序的一种实现
本文介绍了一种在C++中实现字节序转换的方法,包括32位和64位整数的网络字节序与主机字节序之间的转换。通过内联函数提高效率,并展示了如何使用这些函数进行实际的数据字节序转换。

被折叠的 条评论
为什么被折叠?



