2017-10-19 69 views
0

我這行的Python,我要轉換爲PHPPython的binascii.crc32()到PHP CRC()

code = '%08x' % (binascii.crc32(summ) & 0xffffffffL) 

據我瞭解,在PHP相當於binascii.crc32crc32(),我可能是錯的但0xffffffffL使得符號整數積極的,所以我會用abs()

我都試過,但我沒有得到任何輸出甚至不是一個錯誤消息

$code = '%08x' % abs(crc($summ)); 

什麼是正確的方式來獲得python的輸出,但使用PHP?

UPDATE:

我現在已經建立並運行一個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

您正在尋找'sprintf',相當於Python的'%'字符串格式。 – deceze

回答

0

& 0xfffffff缺少一個f