chr -> 把int變成unicode
int(string, base) ->把字串變成以某進位計算
f’{字串:格式}’, 格式016b表示:
str.format會依序將右邊的參數放入大括號{}中
或者,也可直接使用f-string,也就是 f'1110{s[0:4]} 10{s[4:10]} 10{s[10:]}'
分享一下我的寫法,應該會更通用一些,這題只會出現中文,若題目要求更多類型的文字,就需要更通用的寫法了
python 的 str.encode() 可以直接創建一個 bytes 物件,而這個 bytes 物件是可迭代的!
裡面保存的資料是用十進制表達的編碼,所以不能直接 print() 他,要先將每個數字都轉換成二進制再輸出
其實直接 print() 也不會印出十進位數字,而是 16 進位數字
from sys import stdin
for s in stdin:
s = s.rstrip()
c = chr(int(s[2:], base=16))
print(*[bin(i)[2:] for i in c.encode()])
print(c)
|
這樣做的好處是無論字符是用幾個 bytes 表達的都能應對
--
附贈一個關於 unicode 的冷知識
其實很多平台使用的 emoji 都是直接寫在 unicode 裡面的,例如這個符號 😀 的編碼就是 U+1F600
,由四個 bytes 組成
放進去我寫的這個程式裡面,會輸出如下結果
# input U+1F600 |
windows 作業系統可以按快捷鍵 win + ;
或 win + .
叫出 emoji 清單