2015-10-24 32 views
-1

將字符串「0」和「1」寫入文件如果我有字符串「0」和「1」,如何將它們寫入文件中的方式是每個字符只需要一位?如何使用位

回答

0

據我所知,您無法將單個位寫入文件,但您可以使用bytearray寫入字節。此外,表示字符串不同於表示整數,你確定你想要一個字符串嗎?

+0

我要實現Huffmman compresion代碼,並以壓縮我需要的文件,每個字符只需要一點。 – victor

+0

您只能使用一個位來表示2個字符,一個位的唯一可能值是0或1.所以您絕對不能將非常有趣的字符表示爲位。 – jgritty

+0

這就是我想要的,知道如何使用文本中的一個位來編寫字符「0」和「1」。 – victor

0

可以位轉換爲8位串(比特用零填充,以形成完整的字節,如果必要的話):

>>> bits = "1000001" 
>>> int2bytes(int(bits, 2)) 
'A' 

如果比特數是被8整除則每個"0""1"在輸入轉換爲結果中的一位。否則,每個輸入比特需要每比特((n + 7) // 8) * 8/(1.*n)個比特(對於大的n只略微大於1個比特),例如,如果比特數目n=1001則比率是〜1.007

前導零被遺忘。如果您始終在位"1"前加上位,並保存並刪除位,則可以保留它們。

要位保存到一個文件:

with open(filename, 'wb') as file: # open in binary mode 
    file.write(int2bytes(int(bits, 2))) 

其中int2bytes()

import binascii 

def int2bytes(i): 
    hex_string = '%x' % i 
    n = len(hex_string) 
    return binascii.unhexlify(hex_string.zfill(n + (n & 1))) 

要反過來做,看到Convert binary to ASCII and vice versa