Poco::ByteOrder

// 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

自己随便谢谢吧


你可能感兴趣的:(Poco::ByteOrder)