Ваша контрольная сумма будет увеличиваться до тех пор, пока она не станет отрицательной (так как это целое число со знаком)
Вы также можете сократить свой метод до:
public void addToChecksum( byte[] bytes) {
//if the checksum isn't enabled, don't add
if(!checksumEnabled) {
return;
}
long previouschecksum = this.checksum;
this.checksum += bytes.inject( 0L ) { tot, it -> tot += it & 0xFF }
if(this.checksum < previouschecksum) {
logger.error("Checksum DECREASED: " + this.checksum);
}
//logger.info("Checksum: " + this.checksum);
}
Но это победилоне перестань быть негативным.Ради экономии 12 байт на элемент, для которого вы генерируете хеш, я бы все же предложил что-то вроде MD5, которое, как известно, работает, вероятно, лучше, чем ваш собственный ... Однако я понимаю, что иногда есть сумасшедшие требования, которые вы должны выполнитьпридерживаться ...