#26782: [Python]bytes.hex() 竟然可以!?


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

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
c672. RGB ⇆ HEX -- it's david | From: [218.173.238.128] | 發表日期 : 2021-08-24 21:50

題目有兩種input,第一種是#開頭的16進位,第二種是分離的10進位

 

第一種情況-16進位轉10進位:

有一種做法是分別取三次索引並套用int。

我的作法是先使用int()把字串轉成10進位整數,之後直接利用整數的特性,

使用位元運算子計算,例如要算末位,可以 num & 0xFF。

要算中間的數字,可以先右移再取一次再AND,例如  num >> 8 & 0xFF。

數字8就是「一個byte佔8個bit」,0xFF也是一個byte

 

第二種情況-10進位轉16進位:

你可能會利用乘法把數字加起來,或是像上面一樣使用位元運算,或甚至直接用format印出。

我是使用Python內建的功能「bytearray(或者也可以使用bytes)」,可以讀入 list[int] 轉 hex

類似像這樣 bytes([255, 0, 50]).hex().upper(),會使用upper是因為 .hex() 輸出是小寫,而答案需要轉換成大寫

除此之外,還可以增加sperator,還蠻酷的,有興趣可以參考:https://docs.python.org/3/library/stdtypes.html#bytes.hex

 

 
ZeroJudge Forum