我尝试计算设备通信的ASTM数据校验和。
假设我的数据如下:
"1R|14|!!!NE|57.50 ! |%||0 to 100|||||ADMIN||20170407120748|01"预期的校验和是F4,但它给了我04作为校验和。
下面是我的代码:
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;
}我试了很久,但似乎没有效果,请帮帮我…
发布于 2018-10-25 21:51:30
stackoveflow上的其他人也提出了同样的问题。请从那里找到解决方案,如果你仍然有任何问题,恢复回来。
也可以尝试使用下面的代码:
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;
}https://stackoverflow.com/questions/47217904
复制相似问题