栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

字节序 高低地址和高低位及java modbus 字节序中的理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字节序 高低地址和高低位及java modbus 字节序中的理解

先理解几个概念

1字节序

多个字节 之间排列的顺序

2字节高低位

例如16进制 0x12345678 占用了4个字节 那么1234就是高位 5678就是低位

3内存高低地址

数据存在在内存中时 需要先划分分出一个区域给数据保存

栈底 (高地址)
----------
buf[3]
buf[2]
buf[1]
buf[0]
----------
栈顶 (低地址)

那么数据存储就会有多种方式保存

最常用的就是 大端和小端

小端

a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

大端
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

Big-Endian: 低地址存放高位,如下图:
栈底 (高地址)
---------------
buf[3] (0x78) -- 低位
buf[2] (0x56)
buf[1] (0x34)
buf[0] (0x12) -- 高位
---------------
栈顶 (低地址)

Little-Endian: 低地址存放低位,如下图:
栈底 (高地址)
---------------
buf[3] (0x12) -- 高位
buf[2] (0x34)
buf[1] (0x56)
buf[0] (0x78) -- 低位
---------------
栈顶 (低地址)

4在网络编程中的使用

网络传输一般采用大端序,也被称之为网络字节序,或网络序。

操作系统中会出现小端模式

那么为什么网络编程会是大端模式呢?

网络传输 过程中采用大端 会优先把 重要的信号信息发送给服务

5modbus tcp  大小端 在java网络编程中的说明

协议说明 modbus 读取设备线圈状态

 起始位地址  根据说明  起始位地址占用了 两个字节 第一个是高位字节 第二个是低位字节说明发送的数据就是采用了大端模式  已netty的ByteBuf buf 写入数据那么就是 java默认是大端模式

buf.writeShort(13)

如果某些协议采用小端模式怎么写入呢

buf.writeShortLE(a);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881496.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号