我有这行Python,我想转换为PHP
code = '%08x' % (binascii.crc32(summ) & 0xffffffffL)
据我所知,binascii.crc32
的php等价物是crc32()
而我可能错了,但0xffffffffL
使有符号整数为正,所以我会使用abs()
我试过这个但是我没有输出甚至没有错误信息
$code = '%08x' % abs(crc($summ));
使用php获取python输出的正确方法是什么?
更新
我现在已经创建并运行了一个Python脚本和一个PHP等价物,输出略有偏差。
的Python
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
在最终输出的开头可能导致差异的原因
答案 0 :(得分:0)
您的& 0xfffffff
缺少f
。