如何计算除校验和之外的所有字节的加法和?

时间:2015-02-03 14:10:52

标签: java android

我有这个十六进制字符串09F7F8048400000FFF8E。在这个字符串中,最后两个字节是8E,是校验和。

我想知道如何计算除最后两个字节之外的所有字节的加法和?

简而言之,如果我计算048400000FFF的附加和,答案应该是8E。请帮忙。

1 个答案:

答案 0 :(得分:3)

我已经用这种方式完成了它,它的工作方式就像哇: - )

public static void main(String[] args) {

        int checkSum = 0;
        byte [] bytes = hexStringToByteArray("09F7F8008100000FFF");

          for(byte b : bytes){
            checkSum += (0xff & b);
          }

          String checkSumHex = Integer.toHexString(checkSum & 0xFF);

          System.out.println("Checksum is: "+ checkSumHex);
    }

    private static byte[] hexStringToByteArray(String s) {
        int len = s.length();
        byte[] data = new byte[len / 2];
        for (int i = 0; i < len; i += 2) {
            data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                    + Character.digit(s.charAt(i+1), 16));
        }
        return data;
    }