CRC32在PHP和Java中的不同结果
我有一个现有的Java代码,可以在文件的前25MB上计算CRC32:
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。我不确定出了什么问题
我还尝试了使用crc32和crc32b的php hash()函数,结果与Java代码仍然不同
谁能说出我遗漏了什么
共 (0) 个答案