Poco::ByteOrder

来源:互联网 发布:php源码 月卡验证 编辑:程序博客网 时间:2024/05/23 19:11
// Library: Foundation
// Package: Core
// Module:  ByteOrder
// Namespace: Poco

功能:这个类包含了几个静态的方法,用于将整数在大小端,主机网络字节序间转换。

Public static方法

static Int16 toNetwork(Int16 value);   // 将toNetwork替换成fromNetwork,fromLittleEndian,toLittleEndian,fromBigEndian,toBigEndian,flipBytes等static UInt16 toNetwork (UInt16 value);static Int32 toNetwork(Int32 value);static UInt32 toNetwork (UInt32 value);#if defined(POCO_HAVE_INT64)static Int64 toNetwork(Int64 value);static UInt64 toNetwork (UInt64 value);#endif

其中,高低字节的交换,我感觉比较好,所以也就贴出来了

inline UInt16 ByteOrder::flipBytes(UInt16 value){return ((value >> 8) & 0x00FF) | ((value << 8) & 0xFF00);}inline UInt32 ByteOrder::flipBytes(UInt32 value){return ((value >> 24) & 0x000000FF) | ((value >> 8) & 0x0000FF00)     | ((value << 8) & 0x00FF0000) | ((value << 24) & 0xFF000000);}inline UInt64 ByteOrder::flipBytes(UInt64 value){UInt32 hi = UInt32(value >> 32);UInt32 lo = UInt32(value & 0xFFFFFFFF);return UInt64(flipBytes(hi)) | (UInt64(flipBytes(lo)) << 32);}

demo

自己随便谢谢吧


原创粉丝点击