binascii.hexlify()将二进制返回为String而不是Integer

时间:2013-08-20 15:51:08

标签: python bit-shift

我正在尝试自学python而且我只是在搞乱它。 我遇到了一些问题。

基本上我正在尝试制作能够将字符串转换为二进制的字符串,将其按位移位x,然后将其作为新字符串返回给您。

我发现实现这一目标的最佳方法似乎是binascii.hexlify(str)。

我得到的问题是这个方法似乎确实将二进制表示返回给我...但是作为一个字符串??

我不能在字符串上调用int(),并且我尝试了bin(int())等的多种组合。我有点卡在这里伙计们,任何帮助都会受到赞赏: - )

我知道我可能会以完全错误的方式解决这个问题,但是嘿。我正在教自己......: - )

见下面的代码:

import binascii

password = raw_input("Enter your Password")
bits = int(raw_input("Shift By:"))

def getBinary(word):
    return bin(int(binascii.hexlify(word), 16))

def shift(bin, num):
    return bin << num

shift(getBinary(password), bits)

1 个答案:

答案 0 :(得分:4)

bin()hex()等只是字符串形式的数字表示。为了能够进行位移等,您将值保持为整数!请记住,计算机中的每一段数据都是二进制的。然后在输出时转换它。 int的默认输出转换是将其打印为基数10中的数字,使用数字0-9;)。因此,请尝试以下

import binascii

password = raw_input("Enter your Password: ")
bits = int(raw_input("Shift By: "))

def getBinary(word):
    return int(binascii.hexlify(word), 16)

def shift(bin, num):
    return bin << num

shifted = shift(getBinary(password), bits)
print bin(shifted)