У меня есть эта строка Python, которую я хочу преобразовать в PHP
code = '%08x' % (binascii.crc32(summ) & 0xffffffffL)
Как я понимаю, php эквивалент binascii.crc32
является crc32()
и я могу ошибаться, но 0xffffffffL
делает целое число со знаком положительным, поэтому я бы использовал abs()
Я пробовал это, но я не получаю вывод даже сообщение об ошибке
$code = '%08x' % abs(crc($summ));
Как правильно получить вывод Python, но с использованием php?
ОБНОВИТЬ:
Я сейчас создал и запустил скрипт 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
,
Других решений пока нет …