【问题标题】:Convert base64-encoded string into hex int将 base64 编码的字符串转换为 hex int
【发布时间】:2018-08-05 12:32:12
【问题描述】:

我有一个 base64 编码的 nonce 作为 24 个字符的字符串:

nonce = "azRzAi5rm1ry/l0drnz1vw=="

我想要一个 16 字节的 int:

0x6b3473022e6b9b5af2fe5d1dae7cf5bf

我的最佳尝试:

from base64 import b64decode

b64decode(nonce)

>> b'k4s\x02.k\x9bZ\xf2\xfe]\x1d\xae|\xf5\xbf'

如何从 base64 字符串中获取整数?

【问题讨论】:

  • binascii.hexlify(b64decode(nonce)) 或在 Python3 中,b64decode(nonce).hex()

标签: python base64 encode


【解决方案1】:

你可以这样转换:

>>> import codecs
>>> decoded = base64.b64decode(nonce)
>>> b_string = codecs.encode(decoded, 'hex')
>>> b_string
b'6b3473022e6b9b5af2fe5d1dae7cf5bf'

【讨论】:

    【解决方案2】:

    要从字符串中获取整数,您可以:

    代码:

    # Python 3
    decoded = int.from_bytes(b64decode(nonce), 'big')
    
    # Python 2
    decoded = int(b64decode(nonce).encode('hex'), 16)
    

    测试代码:

    nonce = "azRzAi5rm1ry/l0drnz1vw=="
    nonce_hex = 0x6b3473022e6b9b5af2fe5d1dae7cf5bf
    from base64 import b64decode
    
    decoded = int.from_bytes(b64decode(nonce), 'big')
    
    # PY 2
    # decoded = int(b64decode(nonce).encode('hex'), 16)
    
    assert decoded == nonce_hex
    print(hex(decoded))
    

    结果:

    0x6b3473022e6b9b5af2fe5d1dae7cf5bf
    

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 2021-08-22
      • 2019-07-16
      • 2020-07-25
      • 2020-08-16
      • 2019-02-16
      • 1970-01-01
      • 2015-12-07
      • 2014-04-08
      相关资源
      最近更新 更多