DL/T 634.5104 规约中 CP56Time2a 的转换和解析

/**
 * CP56Time2a解析
 *
 * java中byte的范围是-127128,C语言中byte的范围是0255,所有当两个语音进行交互的时候,
 * 需要在java中进行数值的兼容处理,所有在我的程序中有小于0,加256的处理
 *
 * Calendar中,月份是从0开始变化的,Calendar中获取月份获取到的值是8,说明当前是9月,
 * 如果是与C进行交互,发送的时候需要在获取到的月份的数值上加1.解析时需要在获取的数值上减1;
 *
 *
 * @param str 十六进制报文 D9 01 23 09 09 03 16
 * @return 2022-04-09 09:35:29
 */
public static LocalDateTime convertToCP56Time2a(String str) {
    log.info("CP56Time2a str:{}",str);
    int[] bytes = HexUtils.hexStringToIntArray(str);
    int milliseconds1 = bytes[0] < 0 ? 256 + bytes[0] : bytes[0];
    int milliseconds2 = bytes[1] < 0 ? 256 + bytes[1] : bytes[1];
    int milliseconds = milliseconds1 + milliseconds2 * 256;
    // 位于 0011 1111
    int minutes = bytes[2] & 0x3f;
    // 位于 0001 1111
    int hours = bytes[3] & 0x1f;
    // 位于 0000 1111
    int days = bytes[4] & 0x0f;
    // 位于 0001 1111
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值