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 のデフォルトの出力変換は、int0 から 9 の数字を使用して、基数 10 の数値として出力することです;)。したがって、次のことを試してください

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 に答える