BCD 码转换工具
用法:BCD(Binary-Coded Decimal)用 4 位二进制表示 1 位十进制,PLC、拨码开关、老式仪表常用。输入十进制或 BCD 十六进制,自动互转并校验有效性。
全部在浏览器本地计算,不上传、不联网、不记录。
1 十进制 → BCD 码
输入十进制数后实时出 BCD 结果
2 BCD 码 → 十进制
输入 BCD 十六进制后实时出十进制结果
BCD 码 vs 二进制数值对照
| 十进制 | BCD 编码(16位) | 二进制数值(16位) | 说明 |
|---|---|---|---|
| 12 | 0x0012 | 0x000C | BCD 直接写数字,二进制要换算 |
| 99 | 0x0099 | 0x0063 | 8位 BCD 最大值 |
| 1234 | 0x1234 | 0x04D2 | 最容易混淆的例子 |
| 9999 | 0x9999 | 0x270F | 16位 BCD 最大值 |
| — | 0x000A | 10 | 含 A-F,不是有效 BCD |
常见问题
PLC 里为什么要用 BCD 码?直接用二进制不行吗?
BCD 码用 4 位二进制表示 1 位十进制(0-9),优点是和十进制直接对应,不需要进制转换,适合显示和拨码开关输入。老式 PLC(如三菱 FX 早期型号、欧姆龙 C 系列)的定时器/计数器设定值常用 BCD 格式,数字拨码开关输出也是 BCD。现代 PLC 大多直接用二进制整数,但和老设备通讯时仍会遇到 BCD。
BCD 码和十六进制看起来一样,怎么区分?
BCD 码每个字节的高 4 位和低 4 位都只能是 0-9(即 0x00-0x99),不会出现 A-F。如果一个字节是 0x12,作为 BCD 表示十进制 12,作为十六进制表示十进制 18——数值完全不同。判断方法:看每位是否 ≤9,且设备手册是否标注 BCD 格式。
三菱 PLC 的 BCD 指令和 BIN 指令是做什么的?
BCD 指令把二进制整数转换成 BCD 格式(用于输出到数码管/拨码开关),BIN 指令把 BCD 格式转换成二进制整数(用于从拨码开关读入后做算术运算)。例如 D0=1234(二进制),执行 BCD D0 D1 后 D1=0x1234(BCD格式);反过来 BIN D1 D0 又变回 1234。注意 BCD 转换时如果数值含 A-F 会报错。
Modbus 读出来的数据是 BCD 还是二进制?
Modbus 协议本身只传输 16 位寄存器,不定义数据格式。是 BCD 还是二进制取决于从站设备的实现。大多数现代设备用二进制整数或 IEEE754 浮点,但某些老式仪表、电力监控设备、数控系统可能用 BCD。遇到数值明显不对(如 0x1234 读出来是 4660 而不是 1234),就要怀疑是 BCD 格式。