首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算ASTM数据格式的校验和

计算ASTM数据格式的校验和
EN

Stack Overflow用户
提问于 2017-11-10 15:43:48
回答 1查看 598关注 0票数 0

我尝试计算设备通信的ASTM数据校验和。

假设我的数据如下:

代码语言:javascript
复制
"1R|14|!!!NE|57.50 !   |%||0 to 100|||||ADMIN||20170407120748|01"

预期的校验和是F4,但它给了我04作为校验和。

下面是我的代码:

代码语言:javascript
复制
public static String claculate_checksum(String message){

    String output="";
    byte[] bytes = message.getBytes();
    int checksum = 0;
    for(int i=0; i < bytes.length; i++){
        checksum +=bytes[i];
    }
    System.out.println("checksum :"+checksum);
    output = String.format("%x", (checksum & 0xFF)).toUpperCase();

    if(output != null)
        return output;
    return output;
}

我试了很久,但似乎没有效果,请帮帮我…

EN

回答 1

Stack Overflow用户

发布于 2018-10-25 21:51:30

stackoveflow上的其他人也提出了同样的问题。请从那里找到解决方案,如果你仍然有任何问题,恢复回来。

也可以尝试使用下面的代码:

代码语言:javascript
复制
public static String getCheckSum(String msg) {
    int sum = 0;
    for (int i = 0; i < msg.length(); i++) {
        sum += msg.charAt(i);
    }
    sum += 16; //adding CR and ETX AND ETB
    sum = sum % 256;
    String checksum = Integer.toHexString(sum).toUpperCase();
    if (checksum.length() == 1) {
        checksum = "0" + checksum;
    }
    //System.out.println("\n Check Sum is ="+checksum);
    return checksum;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47217904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档