我正在使用chr
和int
將二進制表示字符串轉換爲實數二進制值。當n超過256時,chr(n)失敗
我所做的是
n=int('0101011',2)
binary=chr(n)
然後binary
是表示字符串的實際二進制值。
但是如果我給int的字符串在十進制中大於256會怎樣?
任何解決方案?
PS: 我用CHR是我想n
轉換爲字符串,這樣我可以用它f.write()
寫入文件,究其原因。
而這個問題是從this question
我正在使用chr
和int
將二進制表示字符串轉換爲實數二進制值。當n超過256時,chr(n)失敗
我所做的是
n=int('0101011',2)
binary=chr(n)
然後binary
是表示字符串的實際二進制值。
但是如果我給int的字符串在十進制中大於256會怎樣?
任何解決方案?
PS: 我用CHR是我想n
轉換爲字符串,這樣我可以用它f.write()
寫入文件,究其原因。
而這個問題是從this question
如果我理解你的問題,你想將二進制字符串轉換爲整數值。這就是你在第一行代碼中所做的。第二行只是將一個整數值轉換爲ASCII表中由該值表示的字符。因此,例如,如果字符串是01100001,那麼在第一步中將轉換爲97的int值。第二步然後將97轉換爲ASCII字符'a'。如果您嘗試將此變量作爲數字使用,它將被轉換回爲97的值。因此,如果我理解了您的問題,則在步驟1之後實際上已經有了您想要的數字。
我不認爲這就是他的目標。他想採用'01000001',轉換爲'65',然後將其轉換爲'a',並將其寫入文件。 – dlev
@Anulith,是的,dlev是對的。最終目標是將其寫入文件。所以我的路線圖是** 1 **,將字符串轉換爲int,** 2 **,int轉換爲字符串,以便將其寫入文件,** 3 **,寫入文件 – xiaohan2012
您可以使用不同的格式字符在struct
模塊中的pack()
方法中給出的格式字符串可以輕鬆地獲得長度爲1到8個字節的帶符號或無符號整數的相應二進制表示字符串。
>>> from struct import pack
>>> pack('B', 255)
'\xff'
>>> pack('H', 257)
'\x01\x01'
>>> pack('Q', 9223372036854775807)
'\xff\xff\xff\xff\xff\xff\xff\x7f'
如果需要,可以使用f.write()
將返回的值寫入文件。當讀取或寫入二進制數據到文件時,當您的文件爲open()
時,應該在參數值mode
後附加'b'。
當試圖轉換unicode值時,可能會遇到許多問題。因此,使用unichr
並不總是可能要麼,例如:
>>> n = int('0001f600', 16)
>>> unichr(n)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: unichr() arg not in range(0x10000) (narrow Python build)
請注意,在錯誤narrow Python build
消息,這意味着Python中建沒有廣泛支持Unicode字符,但即使是狹窄的Python可以繞過這個限制(無需與--enable-unicode=ucs4
標誌重新編譯):
>>> n = int('0001f600', 16)
>>> s = '\\U{:0>8X}'.format(n)
>>> s
'\\U0001F600'
>>> binary = s.decode('unicode-escape')
>>> print(binary)
如果該值大於256,將返回mod 256。 – dayuloli