我想将base64字符串转换回python中的GUID样式十六进制数并且出现问题。在python中解码base64 guid
Base64编码字符串为:bNVDIrkNbEySjZ90ypCLew==
,我需要拿回来:2243d56c-0db9-4c6c-928d-9f74ca908b7b
我可以用下面的PHP代码做到这一点,但不能工作,如何将其在Python
function Base64ToGUID($guid_b64) {
$guid_bin = base64_decode($guid_b64);
return join('-', array(
bin2hex(strrev(substr($guid_bin, 0, 4))),
bin2hex(strrev(substr($guid_bin, 4, 2))),
bin2hex(strrev(substr($guid_bin, 6, 2))),
bin2hex(substr($guid_bin, 8, 2)),
bin2hex(substr($guid_bin, 10, 6))
));
}
这里是GUIDtoBase64版本:
function GUIDToBase64($guid) {
$guid_b64 = '';
$guid_parts = explode('-', $guid);
foreach ($guid_parts as $k => $part) {
if ($k < 3)
$part = join('', array_reverse(str_split($part, 2)));
$guid_b64 .= pack('H*', $part);
}
return base64_encode($guid_b64);
}
这里有一些使用一些明显的和不那么明显的选择结果:
import base64
import binascii
>>> base64.b64decode("bNVDIrkNbEySjZ90ypCLew==")
'l\xd5C"\xb9\rlL\x92\x8d\x9ft\xca\x90\x8b{'
>>> binascii.hexlify(base64.b64decode("bNVDIrkNbEySjZ90ypCLew=="))
'6cd54322b90d6c4c928d9f74ca908b7b'
您是否尝试过?随意查看['base64'](https://docs.python.org/3.4/library/base64.html)。 – msvalkon
是的,我已经尝试了大部分base64.b64解码选项等。让我更新结果 – Andrew
好吧,你可以看到你的base64编码数据不符合你的期望。 – msvalkon