C#揭秘十六进制:从零掌握进制转换与Modbus实战
很多同学都好奇:到底什么是十六进制?十六进制该怎么和其他进制互相转换?
大家都知道,计算机底层只认识二进制,日常生活中我们习惯使用十进制,但在编程、串口通信、工控 Modbus 协议中,十六进制无处不在。
这篇博客带你从零搞懂十六进制原理、进制转换方法,同时结合工控实战,彻底弄懂 Modbus 中 0x00、0x01 的真实含义。
一、什么是十六进制?
十六进制的规则:逢十六进一。
可用数字字符:0-9、A、B、C、D、E、F
字母对应数值:A=10、B=11、C=12、D=13、E=14、F=15
在编程语言和工控协议中,0x 是十六进制的专属标识。只要看到 0x 开头,就代表这是十六进制数:
-
0x00 → 十六进制 00
-
0x01 → 十六进制 01
-
0x0A → 十六进制 0A
-
0xFF → 十六进制 FF
二、三大常用进制基础认知
我们开发中只需要掌握三种进制:
1. 二进制:只有 0、1,计算机底层唯一识别语言
2. 十进制:生活通用进制,0~9 组成,通俗易懂
3. 十六进制:编程、报文、工控首选进制
核心优势:精简二进制数据、可读性更强
黄金换算规律:1 位十六进制 = 4 位二进制
这就是通信协议、串口报文全部喜欢用十六进制的原因:大幅缩短报文长度,方便工程师查看和解析数据。
三、零基础进制互相转换(必学)
1. 十六进制 → 十进制
计算规则:高位 × 16 + 低位
示例:
-
0x00 = 0×16 + 0 = 0
-
0x01 = 0×16 + 1 = 1
-
0x0F = 0×16 + 15 = 15
-
0x10 = 1×16 + 0 = 16
-
0x64 = 6×16 + 4 = 100
2. 十进制 → 十六进制
计算规则:除 16 取余,逆序排列
示例1:十进制 10 转十六进制
10 ÷ 16 = 商 0,余数 10 → 对应字母 A
结果:10 = 0x0A
示例2:十进制 100 转十六进制
100 ÷ 16 = 商 6,余 4
6 ÷ 16 = 商 0,余 6
从下往上取余数:64
结果:100 = 0x64
3. 十六进制 ↔ 二进制
熟记一一对应关系:
0=0000、1=0001、2=0010、3=0011
4=0100、5=0101、6=0110、7=0111
8=1000、9=1001、A=1010、B=1011
C=1100、D=1101、E=1110、F=1111
示例:
0x01 = 0001
0x0A = 1010
四、重点实战:Modbus 中 0x 地址深度解析
在 C#、Java 开发 Modbus 主站、从站程序时,0x00、0x01 是最常见的写法,也是新手最容易混淆的知识点。
1. 寄存器两种地址写法
① 程序偏移地址(代码使用)
0x00、0x01、0x02,代表寄存器的偏移起始地址。
② 设备标准地址(上位机、触摸屏、组态使用)
保持寄存器:40001、40002、40003...
输入寄存器:30001、30002、30003...
核心换算公式(必考、必记)
程序偏移地址 = 设备标准地址 - 1
举例:
-
设备 40001 → 代码偏移 0 → 0x00
-
设备 40002 → 代码偏移 1 → 0x01
-
设备 40005 → 代码偏移 4 →0x04
口诀:工控4开头地址,减1就是代码0x偏移地址。
2. Modbus 中 0x 的真实使用场景
① 从站设备地址
byte slaveId = 0x01 等价十进制 1 号从站设备。
② 功能码标识
-
0x03 = 读保持寄存器
-
0x04 = 读输入寄存器
-
0x06 = 写单个保持寄存器
③ 报文数据传输
串口 RTU、网络 TCP 的所有通信报文,本质都是十六进制字节流。我们控制台打印的 RX 接收数据、抓包数据,全部是 0x 格式十六进制数据。
④ 寄存器数值赋值
示例:_slave.DataStore.HoldingRegisters[0] = 0x64
本质就是给寄存器存入十进制 100。
五、开发实用小技巧
-
代码中直接写 0x+数字,编译器自动识别十六进制,无需手动转换
-
调试 Modbus 通信时,可将十六进制报文快速转十进制,校验收发数据是否一致
-
工控项目统一使用0x 偏移地址 开发,避免标准地址、偏移地址混用出错
-
寄存器 ushort 取值范围 0~65535,刚好对应十六进制最大值 0xFFFF
六、全文总结
-
0x 只是十六进制标识,没有实际数值作用,仅用于区分进制类型;
-
日常开发只需掌握 十六进制 <=> 十进制 互转即可;
-
Modbus 核心规则:4 开头标准地址 -1 = 代码 0x 偏移地址;
-
十六进制最大价值:精简二进制报文,是工控通信、底层开发的必备基础。
更多推荐
所有评论(0)