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

相关推荐
2501_933923252 分钟前
Spring Bean作用域揭秘:单例、原型、请求与会话的区别
java·后端·spring·java-ee
学编程就要猛20 分钟前
基于Spring AI 的智能聊天机器人
java·spring ai·chat robot
修炼室22 分钟前
Java开发工程师笔试经验贴【高频知识】
java
木井巳35 分钟前
【记忆化搜索】最长递增子序列
java·算法·leetcode·深度优先·剪枝·推荐算法
杨杨杨大侠42 分钟前
知识库已经有了,Java 程序员还要做什么?Spring AI RAG 实战
java·openai·ai编程
高级程序源42 分钟前
django招聘网站信息爬取与分析系统79704-计算机课程设计、毕业设计
后端·python·mysql·小程序·django·flask·课程设计
伊信1 小时前
Spring AI 基础学习与应用
java·后端
夜郎king1 小时前
基于 Java + Playwright 实现网站自动访问与数据采集(以腾讯云开发者社区为例)
java·playwright·网页数据获取
Anastasiozzzz1 小时前
重新定义 Agent 基建:Redis 在现代 AI 与智能体系统中的工程实践
java·人工智能·redis·ai
careathers1 小时前
【数据结构】队列
java·数据结构