【问题标题】:Python binascii.crc32() to PHP crc()Python binascii.crc32() 到 PHP crc()
【发布时间】: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 的% 字符串格式。

标签: php python crc32


【解决方案1】:

您的& 0xfffffff 缺少f

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 2011-06-30
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    相关资源
    最近更新 更多