如何將十進制轉換爲以下格式的十六進制(至少兩位數,零填充,沒有0x前綴)?Python十六進制
輸入:255
輸出:ff
輸入:2
輸出:02
我試圖hex(int)[2:]
但似乎它顯示的第一個例子,但不是第二個。
如何將十進制轉換爲以下格式的十六進制(至少兩位數,零填充,沒有0x前綴)?Python十六進制
輸入:255
輸出:ff
輸入:2
輸出:02
我試圖hex(int)[2:]
但似乎它顯示的第一個例子,但不是第二個。
以'02x'
的格式使用format()
function。
>>> format(255, '02x')
'ff'
>>> format(2, '02x')
'02'
的02
部分告訴format()
使用至少2位數字,並使用零來填充它的長度,x
意味着小寫十六進制。
的Format Specification Mini Language也給你X
大寫十六進制輸出,並可以與#
前綴字段寬度爲包括0x
0X
或前綴(取決於你閹羊使用x
或X
作爲格式化器)。只是考慮到你需要調整字段寬度允許這些額外的2個字符:
>>> format(255, '02X')
'FF'
>>> format(255, '#04x')
'0xff'
>>> format(255, '#04X')
'0XFF'
謝謝!很好的解釋。 –
我有一個問題,如果將格式設置爲使用大寫十六進制輸出,十六進制前綴將具有大寫「X」。這在你的例子中似乎不是這種情況。這只是我的本地版本的Python的問題嗎?我使用的是2.7.9版本。 – jwp36
@ jwp36:不,這是我的答案中的錯誤,現在已更正。我很抱歉。 –
我想這是你想要什麼:
>>> def twoDigitHex(number):
... return '%02x' % number
...
>>> twoDigitHex(2)
'02'
>>> twoDigitHex(255)
'ff'
第一個答案是最好的,但我有一個古老的答案,但功能
>>> "".join(list(hex(255))[2:])
'ff'
與另一個答案一樣,這不是零墊。例如,'「」.join(list(hex(2))[2:])評估爲「2」,而不是「02」。 – therealrootuser
這與問題的'hex(int)[2:]'同義。爲什麼你只是爲了再次加入而創建一個列表? – wjandrea
爲什麼發佈這個答案,如果你已經同意有一個更好的? – ryry1985
[你嘗試過什麼?](http://whathaveyoutried.com)爲什麼我downvoted這個問題:http://meta.stackexchange.com/a/149138/133242 –
我試過十六進制(int)[2 :]但它似乎顯示第一個例子,但不是第二個。 –
我懂了!謝謝 –