C++ int float double类型的数据大小端转化

以下代码抄自《网络多人游戏架构与编程》,可以支持float、int、double等数据类型数据的大小端转换,测试代码为:

void TestByteSwap()
{
	int32_t test = 0x12345678;
	float floatTest = 1.f;
	
	printf( "swapped 0x%x is 0x%x\n", test, ByteSwap( test ) );
	printf( "swapped %f is %f\n", floatTest, ByteSwap( floatTest ) );
	printf( "swapped 0x%x is 0x%x\n", TypeAliaser< float, uint32_t >( floatTest ).Get(), TypeAliaser< float, uint32_t >( ByteSwap( floatTest ) ).Get() );
}

写成模板的形式更加规范一些

inline uint16_t ByteSwap2( uint16_t inData )
{
	return ( inData >> 8 ) | ( inData << 8 );
}

inline uint32_t ByteSwap4( uint32_t inData )
{
	return  ( ( inData >> 24 ) & 0x000000ff ) |
			( ( inData >>  8 ) & 0x0000ff00 ) |
			( ( inData <<  8 ) & 0x00ff0000 ) |
			( ( inData << 24 ) & 0xff000000 );
}

inline uint64_t ByteSwap8( uint64_t inData )
{
	return  ( ( inData &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值