3

我正在尝试自学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)
4

1 回答 1

4

bin()等等hex()只是数字的表示,以字符串的形式。为了能够进行位移等,您将值保持为整数!请记住,计算机中的每条数据无论如何都是二进制的。然后在输出上转换它。an 的默认输出转换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)
于 2013-08-20T15:56:17.437 回答