2014-02-19 290 views
17

我想將十六進制字符串(例如:0xAD4)轉換爲十六進制數字,然後將0x200添加到該數字,並再次想要以0x的形式將該數字打印爲字符串。如何將十六進制字符串轉換爲十六進制數

我試圖用於第一步:

str(int(str(item[1][:-2]),16)) 

但是,這是獲得打印的值爲小數字符串不是一個十六進制格式的字符串(在0X格式)(我想打印的形式的最終結果0x

  • [:-2]從該數
  • item[1]刪除最後00是包含在0x
  • 形式的十六進制數
+4

Python中沒有這樣的東西作爲十六進制數。只有數字。所以你想要將一個十六進制字符串轉換爲一個數字,而不是一個十六進制數字,然後你想打印一個數字爲十六進制。 –

+0

@SteveJessop你的評論是回答,並且兩個答案都是評論:) –

+0

@GrijeshChauhan:不,這不是一個答案。這個問題包含一個誤解,但糾正了這種誤解之後,問題依然存在,我的評論沒有回答。答案是。 –

回答

34

試試這個:

hex_str = "0xAD4" 
hex_int = int(hex_str, 16) 
new_int = hex_int + 0x200 
print hex(new_int) 

如果你不喜歡在一開始0x,與

print hex(new_int)[2:] 
替換最後一行
+0

感謝這麼快的答覆.. – RATHI

8

使用int函數與第二個參數16,將十六進制字符串轉換爲整數。最後,使用hex函數將其轉換回十六進制數。

print hex(int("0xAD4", 16) + int("0x200", 16)) # 0xcd4 

相反,你可以直接做

print hex(int("0xAD4", 16) + 0x200) # 0xcd4 
+0

我相信OP的混淆在於,當他打印'i'時,他區分'i = 0xad4'和'i = 2772'。 (似乎當我讀他的感謝)反正+你們兩個,因爲我沒有現在'十六進制()' –

-1

使用格式stri ng

intNum = 123 
print "0x%x"%(intNum) 

hex功能。

intNum = 123 
print hex(intNum) 
+0

它看起來像互惠OP要「字符串到十六進制數字」,但你的答案是「數字到十六進制字符串」! –

+0

您可以通過添加以下事實來改善答案:以'0x'開頭的十六進制數字僅爲用戶提供方便每個數字都以二進制形式存儲,甚至不會以十進制形式存儲。 –

+0

我想他想將整數轉換爲十六進制字符串。因爲他已經將十六進制字符串轉換爲整數。 –

相關問題