Python binascii.crc32()到PHP crc()

时间:2017-10-19 09:17:25

标签: php python crc32

我有这行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

在最终输出的开头可能导致差异的原因

1 个答案:

答案 0 :(得分:0)

您的& 0xfffffff缺少f