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算法跟设备端交互传输字节数组

相关推荐
用户93761147581611 分钟前
并发编程三大特性
java·后端
阿在在2 分钟前
Spring 系列(二):加载 BeanDefinition 的几种方式
java·后端·spring
颜酱4 分钟前
前端算法必备:双指针从入门到很熟练(快慢指针+相向指针+滑动窗口)
前端·后端·算法
小当家.10510 分钟前
Maven与Gradle完整对比指南:构建工具深度解析
java·gradle·maven
p***s9113 分钟前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
AI架构师之家16 分钟前
一文分清机器学习、深度学习和各类 AI 工具的关系:心法与招式的区别
后端·ai编程
neoooo17 分钟前
🍃Spring Boot 多模块项目中 Parent / BOM / Starter 的正确分工
java·后端·架构
黄金贼贼18 分钟前
2026最新java单元测试json校验器
java·单元测试·json
菜鸟的迷茫18 分钟前
为了防雪崩加了限流,结果入口先挂了
java·后端·架构
荒诞硬汉20 分钟前
数组常见算法
java·数据结构·算法