2016-02-19 49 views
-2

我想交换decNum块中的最后两个半字节。任何想法如何,我可以实现,在该代码:交换块中的最后两个半字节

list = [132, 201, 141, 74, 140, 94, 141, 140, 141, 15, 31, 164, 90, 229, 201, 141, 78, 114, 241, 217, 141, 217, 140, 180, 141, 164, 51, 141, 188, 221, 31, 164, 241, 177, 141, 140, 51, 217, 141, 201, 229, 152, 141, 78, 241, 114, 78, 102, 94, 141, 74, 152, 31, 152, 141, 94, 201, 31, 164, 102, 164, 51, 90, 141, 201, 229, 164, 31, 201, 152, 152, 51, 115] 
key = 84 
decrypted = [] 
for number in list: 
    decNum = number | key 
    bytes = bin(decNum) 
    print(decNum," Bin:",bytes) 

例如,如果它被赋予数字6(00000110),它应该交换的最后两个半左右,所以输出应该是9(00001001)

+0

你的意思是交换每个数字中的半字节?不要使用保留字'list'作为变量 – helloV

+6

你在寻找什么输出? –

+0

@helloV如果它是[保留](https://docs.python.org/2/reference/lexical_analysis.html#keywords),他将无法使用它。 ;) –

回答

2
def swap_nibbles(byte:int) -> int: 
    if byte >= 256: raise ValueError("Byte values must be 0..255") 

    low_nibble = byte & 0x0F 
    high_nibble = byte & 0xF0 
    result = (high_nibble >> 4) | (low_nibble << 4) 
    return result 

你必须弄清楚在哪里调用它,从你的问题不清楚你想要做什么。

+0

谢谢,只是为了确认是否给出了这个int 6(00000110)它应该返回(00001001) – Volken