2字节(short)4字节(int)交换字序

本文介绍了一种模拟htons或ntohs功能的字节序转换方法,通过两个函数exchangeBytes_16与exchangeBytes__32实现了16位与32位数值的高低字节互换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

exchangeBytes_16(0x1234); 执行结果 0x3412
exchangeBytes__32(0x12345678); 执行结果 0x78563412

 /*******************************************************************************
 2 * Function Name  : exchangeBytes
 3 * Description    : 模拟的htons 或者 ntohs,如果系统支字节序更改可直接替换成系统函数
 4 * Input          : value
 5 * Output         : None
 6 * Return         : 更改过字节序的short数值
 7 * Attention           : None
 8 *******************************************************************************/
short exchangeBytes_16(short value)
{
	short	tmp_value;
	uint8_t	*index_1, *index_2;

	index_1 = (uint8_t *)&tmp_value;
	index_2 = (uint8_t *)&value;

	*index_1 = *(index_2+1);
	*(index_1+1) = *index_2;
	return tmp_value;
}
int exchangeBytes__32(int value)
{
    int    tmp_value;
	short  tmp_valueH,tmp_valueL;
	
	tmp_valueH=exchangeBytes_16((value>>16)&0xFFFF);//MSB
	tmp_valueL=exchangeBytes_16(value&0xFFFF);//LSB
	tmp_value=(tmp_valueH&0xFFFF)+((int)(tmp_valueL<<16)&0xFFFFFFFF);
	return tmp_value;	
}

参考自
实现两个字节序的交换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值