Python binascii.crc32() to PHP crc()



我有一行Python,我想将其转换为PHP

code = '%08x' % (binascii.crc32(summ) & 0xffffffffL)

据我了解,binascii.crc32 的 php 等价物是 crc32(),我可能是错的,但0xffffffffL使有符号整数为正数,所以我会使用abs()

我已经尝试过了,但我没有得到输出,甚至没有错误消息

$code = '%08x' % abs(crc($summ));

使用php获取python输出的正确方法是什么?

更新:

我现在已经创建并运行了一个 Python 脚本和一个 PHP 等效项,输出略有偏差。

import binascii
file = open("test.json","r")
source = file.read()
key1 = 'Y3xFZ4'
key2 = 'ABC123'
summ = bytes(source + key1 + key2, encoding='utf-8')
print (binascii.crc32(summ))
code = '%08x' % (binascii.crc32(summ) & 0xfffffff)
print (code)
file.close() 

输出

2416307871 0005ee9F

.PHP

$json = '{ "name":"John", "age":30, "car":null }';
$summ = $json . 'Y3xFZ4' . 'ABC123';
$test = sprintf("%u", crc32($summ));
$code = dechex((float) $test);
echo $test . ' ' . $code;

输出

2416307871 9005EE9F

可能导致最终输出开始时差异的原因

您的& 0xfffffff缺少f

最新更新