Java实现字节转bcd编码

前言

BCD(Binary-Coded Decimal)是一种将十进制数字编码为二进制的表示方式

bad实现

arduino 复制代码
public class BcdCodeUtil {

    public static String bcdToDecimalString(byte[] bcd) {
        StringBuilder sb = new StringBuilder();
        for (byte b : bcd) {
            sb.append((b & 0xF0) >> 4); // 高4位
            sb.append(b & 0x0F); // 低4位
        }
        return sb.charAt(0) == '0' ? sb.substring(1) : sb.toString(); // 去掉前导零
    }

    public static byte[] stringToUncompactBCD(String decimalStr) {
        if (decimalStr == null || decimalStr.isEmpty()) {
            throw new IllegalArgumentException("输入字符串不能为空");
        }
        if (!decimalStr.matches("\d+")) {
            throw new IllegalArgumentException("输入必须是纯数字字符串");
        }

        byte[] bcd = new byte[decimalStr.length()];
        for (int i = 0; i < decimalStr.length(); i++) {
            int digit = Character.digit(decimalStr.charAt(i), 10);
            bcd[i] = (byte) (digit & 0x0F); // 只使用低4位
        }
        return bcd;
    }

    public static void main(String[] args) {
        String data = "123478254";
        byte[] bcd = stringToUncompactBCD(data);
        String str = bcdToDecimalString(bcd);
        System.out.println(str);
    }

}

输出结果为

总结

可以用bcd算法跟设备端交互传输字节数组

相关推荐
时空系几秒前
第6篇:数据容器——管理大量数据 Rust中文编程
开发语言·后端·rust
eLIN TECE8 分钟前
Go基础之环境搭建
开发语言·后端·golang
念何架构之路9 分钟前
Go反射应用技巧
开发语言·后端·golang
shjita10 分钟前
java根据键值对中值的大小进行排序的手法。
java·开发语言·servlet
司南-704928 分钟前
Dense结构下的 大模型系统架构研究
服务器·人工智能·后端
GISer_Jing28 分钟前
AI全栈转型_TS后端学习路线
前端·人工智能·后端·学习
薪火铺子30 分钟前
Spring Security 6.x 实战指南
java·后端·spring
全栈小刘33 分钟前
Claude Code 为什么这么顺?Anthropic 最新复盘:真正撑住它的不是模型,而是缓存
后端
BING_Algorithm39 分钟前
一文搞定 AOP 所有核心知识点
spring boot·后端·spring
善恶怪客42 分钟前
Java-数据类型
java