大端小端一锅端

大小端说明

  1. 大端模式就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端
  2. 小端模式就是高位字节排放在内存的高地址端,低位字节排放在内存的低地址端

举例 如要存储 0x11223344 到 modbus寄存器的地址4x4000 4x4001 中

其中0x11223344中有四个字节 分别是 0X11 0X22 0X33 0X44 其中0X11为最高位字节,0X44为最低位字节

寄存器地址4x4000为低地址端 4x4001为高地址端

寄存器地址4000(高字节位)4000(低字节位)4001(高字节位)4001(低字节位)
小端值0x440x330x220x11
大端值0x110x220x330x44
小端值(交换字节)0x330x440x110x22
大端值(交换字节)0x220x110x440x33

寄存器字节序数值举例

一个字节(unsigned char)是8位

一个字是两个字节

一个modbus寄存器存一个字,也就是两个字节,十六位

字节交换就是把一个寄存器里的两个字节进行交换

类型格式描述
float5.23浮点型
unsigned ch(HEX)29 5C A7 40A B C D浮点型对应无符号char型数据(说明计算机是小端格式)
big-entian HEX40 A7 5C 29D C B A大端格式
little-entian HEX29 5C A7 40A B C D小端格式
big-entian byte swapA7 40 29 5CC D A B大端格式 字节交换
little-entian byte swap5C 29 40 A7B A D C小端格式 字节交换

附:
联合体HEX --> float

	union {
		float f;
		char ch[sizeof(float)];
	}value;
	//小端格式的5.23
	unsigned char hex[4] = {0x29,0x5C,0xA7,0x40};
	
	value.ch[0] = hex[0];
	value.ch[1] = hex[1];
	value.ch[2] = hex[2];
	value.ch[3] = hex[3];

	printf("0 1 2 3 %lf\n",value.f);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值