Python包到PHP包
我正在尝试将Python脚本转换为PHP。然而,我有麻烦得到正确的格式 Python: 打印(hashlib.sha1(struct.pack('L',1)).hexdigest()) 输出:Python包到PHP包,php,python,struct,pack,unpack,Php,Python,Struct,Pack,Unpack,我正在尝试将Python脚本转换为PHP。然而,我有麻烦得到正确的格式 Python: 打印(hashlib.sha1(struct.pack('L',1)).hexdigest()) 输出: 3c585604e87f855973731fea83e21fab9392d2fc 3da89ee273be13437e7ecf760f3fbd4dc0e8d1fe PHP: echo-sha1(pack('L',1)); 输出: 3c585604e87f855973731fea83e21fab93
3c585604e87f855973731fea83e21fab9392d2fc
3da89ee273be13437e7ecf760f3fbd4dc0e8d1fe
PHP:
echo-sha1(pack('L',1));
输出:
3c585604e87f855973731fea83e21fab9392d2fc
3c585604e87f855973731fea83e21fab9392d2fc
有人能给我指出正确的方向以获得两种语言的相同输出吗?由于整数大小不同而产生差异。php版本的pack()中的
L
使用硬编码的32位整数,而Python默认使用机器整数大小。如果您使用的是64位系统,您会注意到其中的差异。(如问题所示)
您需要使用python中的=
来标准化aligment和大小:
print(hashlib.sha1(struct.pack('=L', 1)).hexdigest())
输出:
3c585604e87f855973731fea83e21fab9392d2fc
请参阅本文件:
- Python结构:
- PHP包:
用于大端,标准尺寸
L
==Q
(64位)
打印(hashlib.sha1(struct.pack)('正确的方向是将PHP转换为Python。我当然喜欢!