CRC32 — разные результаты в PHP и Java

У меня есть существующий код Java, который рассчитывает CRC32 на первых 25 МБ файла:

            File file = new File(filepath);
fileLength = file.length();

FileInputStream fileHandle = new FileInputStream(filepath);
CheckedInputStream checkedHandle = new CheckedInputStream(fileHandle, new CRC32());
BufferedInputStream bufferedIn = new BufferedInputStream(checkedHandle);

if (fileLength <= 25 * 1024 * 1024) {
while (bufferedIn.read() != -1) {}
firstChecksum = checkedHandle.getChecksum().getValue();
} else {
byte[] b = new byte[25 * 1024 * 1024]; // 25mb
while (bufferedIn.read(b) >= 0) {}
firstChecksum = checkedHandle.getChecksum().getValue();
checkedHandle.close();
bufferedIn.close();
fileHandle.close();
}

Мы пытаемся реализовать ту же функцию в PHP. Вот что я пытаюсь:

<?php
$block = 25*1024*1024;
$filesize = filesize("test.mp4");
$in = fopen("test.mp4","r");
$firstblock = fread($in,$block);
fclose($in);
$checksum = crc32($firstblock);
printf("%u\n", $checksum);
?>

Однако я получаю разные результаты. Java возвращает 1706882279, а PHP возвращает 1015401640. Я не уверен, что происходит не так.

Я также попробовал функцию php hash () с crc32 и crc32b и по-прежнему отличался от Java-кода.

Кто-нибудь может сказать, что мне не хватает?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …