如果我將字母 'à' 編碼為 UTF-8,我會得到以下結(jié)果:'à'.encode('utf-8')>> b'\xc3\xa0'現(xiàn)在從字節(jié)數(shù)組中,我想將 'à' 轉(zhuǎn)換為二進(jìn)制字符串并將其重新轉(zhuǎn)換為 'à'。為此,我執(zhí)行以下代碼:byte = bytearray('à','utf-8')for x in byte: print(bin(x))我得到0b11000011和0b10100000,即 195 和 160。然后,我將它們?nèi)诤显谝黄鸩⑷〕?b部分?,F(xiàn)在我執(zhí)行這段代碼:s = '1100001110100000'value1 = s[0:8].encode('utf-8')value2 = s[9:16].encode('utf-8')value = value1 + value2print(chr(int(value, 2)))>> 憠無論我如何開發(fā)后面的部分,我都會得到符號并且似乎永遠(yuǎn)無法找回我的“à”。我想知道這是為什么?我怎么能得到一個'à'。
3 回答

侃侃無極
TA貢獻(xiàn)2051條經(jīng)驗 獲得超10個贊
>>> bytes(int(s[i:i+8], 2) for i in range(0, len(s), 8)).decode('utf-8') 'à'
這有多個部分。該bytes
構(gòu)造函數(shù)創(chuàng)建一個從整數(shù)序列的字節(jié)串。整數(shù)由int
以 2 為基數(shù)的字符串組成。range
與切片的組合一次剝離 8 個字符。最后decode
將這些字節(jié)轉(zhuǎn)換回 Unicode 字符。

神不在的星期二
TA貢獻(xiàn)1963條經(jīng)驗 獲得超6個贊
你需要你的第二位是s[8:16](或只是s[8:])否則你會得到0100000
您還需要將“位字符串”轉(zhuǎn)換回整數(shù),然后再將其視為一個字節(jié) int("0010101",2)
s = '1100001110100000'
value1 = bytearray([int(s[:8],2), # bits 0..7 (8 total)
int(s[8:],2)] # bits 8..15 (8 total)
)
print(value1.decode("utf8"))
添加回答
舉報
0/150
提交
取消