NMEA checksum

Checksum

NEMAフォーマットは$で始まり、で終わります(のあとにchecksumをつける)。 checksumは、最初の文字と次の文字の排他的論理和(xor)を最後の文字まで続けることにより得ることができます。

/**
* @param data  計算対象文字列
* @param startPos  計算開始位置 $で始まっているならば1
* @param endPos 計算終了位置 *で終わっているならばdata.length() - 1
* @return 1byte checksum
*/
public static byte getNEMAcheckSum(String data, int startPos, int endPos) {
    byte checkSum = 0;
    for(int i = startPos; i < endPos; i++) {
        checkSum ^= (byte)data.charAt(i);
    }   
    return checkSum;
}