×
解除綁定,重新設定系統帳號的密碼
您的系統帳號 ID:
您的系統帳號:
您的帳號暱稱:
設定新密碼:
設定新密碼:
×
請輸入要加入的「課程代碼」
請向開設課程的使用者索取「課程代碼」
分類題庫
解題動態
排行榜
討論區
競賽區
登入
註冊
發表新討論
解題報告
#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