2015-11-18 28 views
6

在Python中,我已經能夠採取32位的字符串,並將其轉換成二進制數這用下面的代碼:的Python:從二進制轉換爲字符串

def doConvert(string): 
    binary = 0 
    for letter in string: 
     binary <<= 8 
     binary += ord(letter) 

    return binary 

所以對於字符串, 'abcd',這個方法會返回正確的值1633837924,但我無法弄清楚如何做相反的事情;取一個32位的二進制數字並將其轉換爲一個字符串。

如果有人可以幫助,我將不勝感激幫助!

+0

@ shuttle87我正在使用Python2 – andrewvincent7

+0

它總是一個32位整數? – shuttle87

+0

是的,總是一個32位字符串被轉換。 – andrewvincent7

回答

6

如果你總是用一個32位整數處理您可以使用struct模塊要做到這一點:

>>> import struct 
>>> struct.pack(">I", 1633837924) 
'abcd' 

只要確保你使用的是相同的endianness這兩個包並解壓,否則你會得到結果是錯誤的順序,例如:

>>> struct.pack("<I", 1633837924) 
'dcba' 
+0

謝謝,這個作品真的很好!什麼是「我」呢?我無法在文檔中找到合理的解釋。 – andrewvincent7

+0

'I'表示它是一個無符號整數。 '''說它是[big-endian](https://en.wikipedia.org/wiki/Endianness#Big-endian)格式。 – shuttle87

+1

'>>> help(struct)' 可選的第一個格式char表示字節順序,大小和對齊方式: @:本機順序,大小和對齊方式(默認) =:本機順序,std。大小和對齊 <:little-endian,std。尺寸和對齊 >:big-endian,std。 size&alignment !:與> –

相關問題