【问题标题】:How to concatenate and convert hex to base 64 in Python?如何在 Python 中将十六进制连接并转换为 base 64?
【发布时间】:2014-01-15 06:49:42
【问题描述】:

我正在尝试将十六进制值转换为基数 64。

我有一个脚本可以对每个值进行一些计算。
然后我想将最终值转换为基数 64。

import base64
for i, v in enumerate([0x31, 0x37, 0x32, 0x2e]):
    z=i+v #adds positional index to hex value
    q=z+0x27 #adds constant 
    x=q^i # XORs with positional index
print (x)

给予:

88
94
89
91

我正在尝试将这些值转换为 base 64。 如果我以这种形式手动输入它们:585e595b,则此代码有效:

>>> "585e595b".decode('hex').encode('base64')
'WF5ZWw==\n'

【问题讨论】:

  • 没有“十六进制值”之类的东西 - 十六进制只是值的许多表示之一。您选择在第 2 行以十六进制写入四个值,但之后它们只是值(确切地说是整数)。那么,鉴于此,您到底想要做什么?

标签: python hex base64 decimal


【解决方案1】:

哇,你自己回答了!

您可以对字符串进行编码或解码转换:

print str(x).encode('base64')    # should be something like this

我还认为您的算法存在问题,因为数字不会叠加到 x 变量中。 只有最后一个数字正在打印。

【讨论】:

    【解决方案2】:

    我真的不确定您要做什么,但我感觉您正在寻找 chr() 将序数整数转换为其各自的 ASCII 字符:

    values = []
    
    for i, v in enumerate([0x31, 0x37, 0x32, 0x2e]):
        z=i+v #adds positional index to hex value
        q=z+0x27 #adds constant
        x=q^i # XORs with positional index
        values.append(x)
    
    print "585e595b".decode('hex') .encode('base64')
    
    s = ''.join([chr(i) for i in values])
    print s.encode('base64')
    

    输出:

    WF5ZWw==
    
    WF5ZWw==
    

    【讨论】:

    • 对于 python-3 使用:import codecs, base64; base64.b64encode(codecs.decode(b"585e595b")).
    【解决方案3】:

    将其用于您现有的代码...转换为十六进制,然后切掉 0x 并累积在一个变量中。完成后,按照您的建议进行操作。我得到WF5ZWw== 用于输出。

    import base64
    string = ''
    for i, v in enumerate([0x31, 0x37, 0x32, 0x2e]):
        z=i+v #adds positional index to hex value
        q=z+0x27 #adds constant 
        x=q^i # XORs with positional index
        string += hex(x)[2:]
    print string.decode('hex').encode('base64')
    

    【讨论】:

      【解决方案4】:

      一种方法:

      data = [0x31, 0x37, 0x32, 0x2e]
      encoded = base64.b64encode(''.join(hex(x)[2:] for x in data))
      

      【讨论】:

        猜你喜欢
        • 2021-09-30
        • 2015-12-09
        • 1970-01-01
        • 2017-02-05
        • 1970-01-01
        • 2018-07-24
        • 2010-12-15
        • 2011-08-13
        • 2012-03-01
        相关资源
        最近更新 更多