Они, вероятно, означают простое добавление без знака всех байтов (при условии, что 8-битный байт является наименьшей единицей во всем, с чем вы взаимодействуете):
byte[] data = getTheDataFromSomewhere();
long checksum = 0;
for (int i = 0; i < data.length; i++) {
checksum += (data[i] & 0xFF);
}
checksum = checksum & 0xFFFFFFFFL; // truncate to 4 byte
Вы также можете использовать int
, но это приведет к отрицательному числу. По битам это будет эквивалентно, но так проще сравнивать значения.