gpt4 book ai didi

python - 十六进制到 64 进制和其他进制

转载 作者:行者123 更新时间:2023-11-30 22:49:10 24 4
gpt4 key购买 nike

我有一些代表十六进制数字的字符串,我想将其转换为 base-64。我该怎么做以及这个建议如何发挥作用?因为我需要了解它是如何工作的。

我想到的第一件事是(我是个菜鸟)实现一个简单的算法,该算法可以像使用笔和纸一样进行,尽管我认为 Python 有这种“内置”的东西。

我可以通过在互联网上搜索来实现这一点,但是我需要了解它是如何工作的。

一些示例问题可以让您了解我需要的解释:

  • 如果您的答案需要 b'...' 类型的字符串你能解释一下它们是什么以及为什么 b64encode()似乎只接受这种类型的对象作为参数?
  • 为什么int()只能工作到基数 36,我一般如何整齐地处理不同基数之间的转换,如果您的解决方案涉及此功能,您能否给出进一步的解释?

所以如果有人可以在这里给我一些指示。我无法从文档中提取太多内容,因为这种类型的知识似乎已经是预期的了。

谢谢。

最佳答案

下面的代码将引导您完成从十六进制字符串转换为 b64 编码字符串的过程。

import base64
x=int('0xABCDEF01',base=16)
print("x : ",x)
b=x.to_bytes(length=4,byteorder='big')
print("b : ",b)
e=base64.b64encode(b)
print("e : ",e)
b2=base64.b64decode(e)
print("b2 : ",int(b2.hex(),base=16))

输出:

x  :  2882400001
b : b'\xab\xcd\xef\x01'
e : b'q83vAQ=='
b2 : 2882400001

一些(冗长的)解释:所以我们从字符串中的十六进制开始,没什么特别的,int将其与基数一起将其转换为常规整数x。对于 python 来说,x 是一堆表示数字的位,大多数情况下将以 10 为基数打印。我们可以使用 x.to_bytes 来询问位表示。结果是一个字节序列,将打印为 b'...' 请注意,打印过程会自动尝试将字节转换为 ascii 字符或类似 \xab 的内容> 如果给定的字节不与 ascii 字符关联。因此,我们然后将字节提供给通常用于处理文件的 b64encode,因此满足字节对象要求,并且它会吐出一个 ascii-string 作为字节对象。与此结果相反的过程类似:b64 ascii-string -> 以字节为单位的二进制数 -> 十六进制 -> int。

关于python - 十六进制到 64 进制和其他进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39884681/

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