#31997: [Python]unicode chr, int('55E8', base), f-string, format


406490150@gms.tku.edu.tw (我是朱朱)

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
e600. Unicode (萬國碼) -- 트와이스 | From: [36.238.65.21] | 發表日期 : 2022-09-05 11:56

chr -> 把int變成unicode
int(string, base) ->把字串變成以某進位計算

f’{字串:格式}’, 格式016b表示:

  • 不滿總字寬的格子,不顯示空白,而是前面補0
  • 佔總字寬16個位子
  • 以binary(二進位)顯示

str.format會依序將右邊的參數放入大括號{}中

或者,也可直接使用f-string,也就是 f'1110{s[0:4]} 10{s[4:10]} 10{s[10:]}'

 
#45274: Re: [Python]unicode chr, int('55E8', base), f-string, format


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 臺中市立惠文高級中學
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2025-03-11 12:39:29
e600. Unicode (萬國碼) -- 트와이스 | From: [123.192.228.253] | 發表日期 : 2025-02-04 22:13

分享一下我的寫法,應該會更通用一些,這題只會出現中文,若題目要求更多類型的文字,就需要更通用的寫法了

 

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

11110000 10011111 10011000 10000000
😀

 

windows 作業系統可以按快捷鍵 win + ;win + . 叫出 emoji 清單

 

 
ZeroJudge Forum