第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

與編碼和解碼混淆

與編碼和解碼混淆

翻過高山走不出你 2022-09-27 10:03:08
因此,我想通過編寫字母的十六進(jìn)制值來打印希伯來語(或任何其他語言),對其進(jìn)行解碼并將其打印到終端。這就是我嘗試的,我從 https://en.wikipedia.org/wiki/Code_page_862 獲得了cp862的代碼頁,并試圖打印第一個字母。它輸出其他內(nèi)容,而不是想要的結(jié)果。我做錯了什么?letter = b'\x05\xD0' print(letter.decode('cp862'))輸出:wahalez@wahalez:~/開發(fā)/蟒蛇$ 蟒蛇 p25.py╨何時使用編碼,何時使用解碼?編輯:另一個奇怪的行為是我交換了字節(jié)并將其解碼為utf-16,它工作了。為什么?。。letter2 = b'\xD0\x05' print(letter2.decode('utf-16'))
查看完整描述

3 回答

?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗 獲得超7個贊

你誤讀了那張圖表。該值是該字符的 unicode 代碼點。該值是 CP862 值(請參閱右側(cè)和頂部的?)。所以如果你要寫:0x05D00x808__0


>>> letter = b'\x80'

>>> print(letter.decode('cp862'))

?

你會得到你想要的。


我怎么能使用統(tǒng)一碼來代替?用什么編碼?


我不完全清楚你想做什么。如果您只想使用表格中的字符,只需復(fù)制并粘貼即可。例如:


letter = '?`

沒有必要糾結(jié)編碼或解碼。


如果要從特定的 unicode 代碼點生成字符,只需使用以下函數(shù):chr


>>> print(chr(0x05d0))

?


查看完整回答
反對 回復(fù) 2022-09-27
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗 獲得超6個贊

  • 在python字符串中,字節(jié)和字節(jié)序列稱為平面序列,這意味著它們已編入索引,但它們與容器化序列(如列表或元組)的類型不同,

  • 任何字符串字符都有一個稱為代碼點的固定標(biāo)識。碼位是介于 0 和 0 到 1,114,111 之間的小數(shù)。

  • 內(nèi)置函數(shù)采用單個字符并返回一個整數(shù),該整數(shù)表示字符的代碼點ord()

print([chr(i) for i in range(100,120)])

['d', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w']

ord('€')

8364

代碼點的格式為 U+ 前綴

對于字母 A,代碼點是 U+0041,對于歐元符號,代碼點是 U+20AC

如果我們用他包裝,我們得到字符的十六進(jìn)制表示ord()hex()

hex(ord('A'))

'0x41'

hex(ord('€'))

'0x20ac'

現(xiàn)在,如果你從機(jī)器的角度來考慮這個問題,想想所有這些都是用機(jī)器語言寫的。所以你用機(jī)器語言把它變成你(用戶)可讀的格式。decode()

b'\x41'.decode('UTF_8')

'A'

b'\x41\x00'.decode('UTF_16')

'A'

b'\x41' 和 b'\x41\x00' 是 utf-8 和 utf-16 編碼中字母 A 的字節(jié)序列

b'\xe2\x82\xac'.decode('UTF_8')

'€'

b'\xac\x20'.decode('UTF_16')

'€'

當(dāng)您編碼時,您將字節(jié)序列轉(zhuǎn)換回機(jī)器理解的語言。

字節(jié)序列是機(jī)器識別的碼位表示形式

.encode() 字符串到字節(jié),.decode() 字節(jié)到字符串

字符串字符和字節(jié)之間的映射使用 UTF-8(或 UTF-16,gb2312...)編碼進(jìn)行解釋

"café".encode('utf_8')

b'caf\xc3\xa9'

"café".encode('utf_16')

b'\xff\xfec\x00a\x00f\x00\xe9\x00'

'El Ni?o'.encode('utf_8')

b'El Ni\xc3\xb1o'

因此,當(dāng)實例對象是希伯來語或字符時使用,當(dāng)您的實例是字節(jié)序列(例如字母 A 的字節(jié)序列)時使用。.encode().decode()b'\x41\x00'

在非常相似的行為中,class 方法采用字符并對其進(jìn)行編碼,就像編碼到字節(jié)序列中一樣。bytes().encode()

bytes("El Ni?o", encoding = 'utf_16')

b'\xff\xfeE\x00l\x00 \x00N\x00i\x00\xf1\x00o\x00'

上面的所有代碼都在python3.8中。在python 2中,在數(shù)據(jù)類型方面有所不同。因此,如果您在Python 2中嘗試此操作,請謹(jǐn)慎行事


查看完整回答
反對 回復(fù) 2022-09-27
?
catspeake

TA貢獻(xiàn)1111條經(jīng)驗 獲得超0個贊

    

有一個方便的縮寫;BADTIE:字節(jié)被解碼,文本被編碼。


此外,您還混淆了 Unicode 代碼點與值。cp862


希伯來字母Aleph是Unicode代碼點0x05D0,但在代碼頁862中,它是0x80。


試試這個:


In [3]: b = b'\x80'

Out[3]: b'\x80'


In [4]: b.decode('cp862')

Out[4]: '?'

To use the unicode code point, try:


In [12]: chr(0x05D0)

Out[12]: '?'


查看完整回答
反對 回復(fù) 2022-09-27
  • 3 回答
  • 0 關(guān)注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號