我有整數列表,在範圍[0,255]的每個整數。我想把它轉換成一串位。每個整數使用8位來表示。經過我處理的比特串,我想將它轉移到一個整數列表,每8位爲整數。怎麼做?蟒蛇怎麼位的整數列表和字符串之間傳輸?
0
A
回答
1
您不需要外部庫。使用python的內置函數。
整數二進制:
i = 100
print "{0:08b}".format(i)
二進制整數:
b = "01100100"
print int(b, 2)
如果你需要建立一個大型位陣列,然後使用bitarray
模塊是好的,因爲你在你的答案做了什麼:
bits = bitarray()
for i in pixels: bits.extend("{0:08b}".format(i))
+0
對不起,我不明確describy我的問題。在轉換成位之後,我會操縱它們。如果使用字符串來表示,它將消耗我所有的記憶。 –
+0
由於python int不是全部4字節,所以我不能使用位偏移來處理像我使用C –
+0
這樣的位。那麼你可以使用'bitarray'作爲你在答案中所做的事情。我也編輯了我的答案。 –
0
我已經得到了答案。這是我的回答:
from PIL import Image
from bitarray import bitarray
from bitstring import BitArray
class Compress:
def readFile(self, filename):
self.img = Image.open(filename)
self.pixels = list(self.img.getdata()) # a list of int--[0,255]
def __toBitArray__(self):
self.bits = bitarray()
for i in self.pixels:
self.bits.extend(BitArray(uint=i, length=8).bin)
print(self.bits.length())
def saveFile(self, filename):
p = []
for i in range(self.bits.length()//8):
b = self.bits[i*8:i*8+8].to01()
p.append(BitArray(bin=b).uint)
self.img.putdata(p)
self.img.save(filename)
self.img.close()
if __name__ == '__main__':
c = Compress()
c.readFile('num.bmp')
c.__toBitArray__()
c.saveFile('test.bmp')
相關問題
- 1. 串聯字符串和整數蟒蛇
- 2. 從字符串和整數蟒蛇
- 3. 在列表中的整數字符串轉換蟒蛇
- 4. 查找字符串中的字符串列表中的蟒蛇
- 5. 蟒蛇:字符串
- 6. 如何蟒蛇比較字符串和整數
- 7. RPC和蟒蛇之間
- 8. 閱讀與聲明字符串蟒蛇之間的區別
- 9. 轉換字符串列表Python的數據幀 - pyspark蟒蛇sparksql
- 10. 如何輸入字符串,輸出INT,使用陣列蟒蛇
- 11. 轉換列表,以整數的蟒蛇
- 12. 蟒蛇在某些字符串分割成列表子列表
- 13. 蟒蛇正則表達式/分兩個名字之間的串
- 14. 蟒蛇:分割字符串的字符
- 15. 蟒蛇從字符串
- 16. 導入字符串 - 蟒蛇
- 17. 蟒蛇:清理字符串
- 18. 地帶串字符蟒蛇
- 19. 蟒蛇:從JavaScript字符串
- 20. 蟒蛇,格式字符串
- 21. 蟒蛇改變字符串
- 22. 字符串到蟒蛇wstring
- 23. 字符串連接「\」蟒蛇
- 24. 獲取字符串蟒蛇
- 25. 蟒蛇:從字符串
- 26. 蟒蛇 - RE關鍵字後提取的字符串到列表
- 27. 蟒蛇評估和字符串索引
- 28. 蟒蛇怎麼算的HTML
- 29. 找到列表串 - 蟒蛇
- 30. 在片段之間傳遞字符串[]。怎麼做?
請顯示你的嘗試[mcve]並解釋你的困難。 – idjaw
你可能會尋找到啓動['B'「演示型」(https://docs.python.org/2/library/string.html#format-string-syntax)在'「」%使用'或'「」.format()'以及[int function的第二種形式](https://docs.python.org/2/library/functions.html#int)一個「基礎」論點。 –
jedwards