gpt4 book ai didi

python - 在python中解码base64 guid

转载 作者:行者123 更新时间:2023-12-01 05:14:25 24 4
gpt4 key购买 nike

我试图在 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'

最佳答案

现有函数的 Python 端口(bitstring 必需)

import bitstring, base64

def base64ToGUID(b64str):
s = bitstring.BitArray(bytes=base64.b64decode(b64str)).hex
def rev2(s_):
def chunks(n):
for i in xrange(0, len(s_), n):
yield s_[i:i+n]
return "".join(list(chunks(2))[::-1])
return "-".join([rev2(s[:8]),rev2(s[8:][:4]),rev2(s[12:][:4]),s[16:][:4],s[20:]])

assert base64ToGUID("bNVDIrkNbEySjZ90ypCLew==") == "2243d56c-0db9-4c6c-928d-9f74ca908b7b"

关于python - 在python中解码base64 guid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23515237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com