二進(jìn)制計(jì)算的一般做法是:
1.將二進(jìn)制串按照8位一組分開(kāi)动漾;
2.將8位一組的二進(jìn)制串計(jì)算成十進(jìn)制數(shù)(十六進(jìn)制也可以);
3.對(duì)照二進(jìn)制編碼表段誊,將十進(jìn)制數(shù)轉(zhuǎn)換成字符串俯画。
例如將以下二進(jìn)制串變換成字符串:
011000010100100001010010001100000110001101000100011011110111011001001100001100110110010000110011011001000111100100110101011110100110000101000111011011000011010101011001010101110011010101101001010110010101100001001001011101010101100100110010001110010111010001001100001100100100111000110000010110100110100100111000011110000100111101000100010010010011000001010010011011010111100001101000010110100011000001101100011110100101100101010110010101100101001101010100010000010011110100111101
將二進(jìn)制串8位一組分開(kāi)的話,有很多種方法:
1. 用for循環(huán)两踏,8位一組分開(kāi):
s = "011000010100100001010010001100000110001101000100011011110111011001001100001100110110010000110011011001000111100100110101011110100110000101000111011011000011010101011001010101110011010101101001010110010101100001001001011101010101100100110010001110010111010001001100001100100100111000110000010110100110100100111000011110000100111101000100010010010011000001010010011011010111100001101000010110100011000001101100011110100101100101010110010101100101001101010100010000010011110100111101"
最后的輸出結(jié)果為:
aHR0cDovL3d3dy5zaGl5YW5iYXIuY29tL2N0Zi8xODI0RmxhZ0lzYVVSTA==
BASE64直接解碼:
import base64
base64.decode('aHR0cDovL3d3dy5zaGl5YW5iYXIuY29tL2N0Zi8xODI0RmxhZ0lzYVVSTA==')
2.采用re模塊的findall
''.join([chr(int(x,2)) for x in re.findall(".{8}",s)])
不加''.join是輸出的是列表败京,通過(guò)''.join將列表的內(nèi)容組合成字符串。
第二種方式最為簡(jiǎn)單梦染,但需要對(duì)迭代和正則表達(dá)式比較熟悉赡麦。