【发布时间】:2018-03-31 07:03:48
【问题描述】:
我有这行 Python 想要转换成 PHP
code = '%08x' % (binascii.crc32(summ) & 0xffffffffL)
据我所知,binascii.crc32 的 php 等效项是 crc32(),我可能是错的,但 0xffffffffL 使有符号整数为正,所以我会使用 abs()
我已经尝试过了,但我没有得到任何输出,甚至没有错误消息
$code = '%08x' % abs(crc($summ));
获取python输出但使用php的正确方法是什么?
更新:
我现在已经创建并运行了一个 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
最终输出开始出现差异的原因可能是什么
【问题讨论】:
-
您正在寻找
sprintf,相当于Python 的%字符串格式。