2016-05-11 10 views
0

ビット操作をしたい、助けが必要です:ビットで作業するPython

私は16ビットの単語を2つに分割し、それぞれを逆にしてから再び結合したいと考えています。私は0b11000011

ファーストをお持ちの場合

例は、私は、私が取得0b0011と0b1100

の両方を逆転させ、最終的には0b00111100

感謝を取得し、それらを再度参加0b1100と0b0011

に分けます!ここ

答えて

1

あなたが試すことができますいくつかの基本的な操作で、次の2つのあなたの文字列を分割し、それを

a = "0b11000011" #make a string 

b = a[:6]   #get first 5 chars 

c = a[::-1]  # invert the string 
3

を逆にした後、結果を連結することができますここでそれを行うための一つの方法だ:

def rev(n): 
    res = 0 
    mask = 0x01 
    while mask <= 0x80: 
     res <<= 1 
     res |= bool(n & mask) 
     mask <<= 1 

    return res 

x = 0b1100000110000011 
x = (rev(x >> 8) << 8) | rev(x & 0xFF) 
print bin(x) # 0b1000001111000001 

。なお、上記のメソッドは、質問の例としてバイトではなく、単語に対して動作します。

関連する問題