回答
歡迎來到StackOverflow!
int
給定基體2,然後hex
:
>>> int('010110', 2)
22
>>> hex(int('010110', 2))
'0x16'
>>>
>>> hex(int('0000010010001101', 2))
'0x48d'
的int
的DOC:
int(x[, base]) -> integer Convert a string or number to an integer, if possible. A floating
點 參數將朝向零被截斷(這不包括串 表示的浮點數!)在轉換字符串時, 使用 可選的基地。在轉換 非字符串時提供基數是錯誤的。如果基數爲零,則基於 字符串內容猜測正確的基數。如果參數超出整數範圍,將返回一個長 長對象。
的hex
的DOC:
hex(number) -> string Return the hexadecimal representation of an integer or long
整數。
假設它們被4分組並被空白分隔。這保持領先的0
b = '0000 0100 1000 1101'
h = ''.join(hex(int(a, 2))[2:] for a in b.split())
你不需要列表理解 – SilentGhost 2010-01-15 15:00:57
好點。不知道爲什麼我總是這樣做。 – 2010-01-15 15:13:16
bstr = '0000 0100 1000 1101'.replace(' ', '')
hstr = '%0*X' % ((len(bstr) + 3) // 4, int(bstr, 2))
>>> import string
>>> s="0000 0100 1000 1101"
>>> ''.join([ "%x"%string.atoi(bin,2) for bin in s.split() ] )
'048d'
>>>
或
>>> s="0000 0100 1000 1101"
>>> hex(string.atoi(s.replace(" ",""),2))
'0x48d'
使用字符串模塊是如此的20世紀90年代...... – 2010-01-15 20:41:24
所以有什麼問題?它仍然在Python 2.6 – ghostdog74 2010-01-15 23:51:30
對於在1.X中使用它的人來說,它仍然在2.X中。 string.atoi()是根據2.6文檔「」「從2.0版開始棄用:使用int()內置函數。」「」並且不存在於3.X中。 string.atoi()的2.X實現調用int()。告訴一些新手string.atoi()甚至不存在,更不用說告訴他們使用它而不是告訴他們使用int()。 – 2010-01-16 09:08:51
使用沒有凌亂的串連和padding:
'{:0{width}x}'.format(int(temp,2)), width=4)
會給出一個十六進制表示與填充保留
無論出於何種原因,我有問題的一些回答這些問題,我已經去了併爲我自己寫了一些幫助函數,所以如果你像我一樣遇到問題,請嘗試一下。
def bin_string_to_bin_value(input):
highest_order = len(input) - 1
result = 0
for bit in input:
result = result + int(bit) * pow(2,highest_order)
highest_order = highest_order - 1
return bin(result)
def hex_string_to_bin_string(input):
lookup = {"0" : "0000", "1" : "0001", "2" : "0010", "3" : "0011", "4" : "0100", "5" : "0101", "6" : "0110", "7" : "0111", "8" : "1000", "9" : "1001", "A" : "1010", "B" : "1011", "C" : "1100", "D" : "1101", "E" : "1110", "F" : "1111"}
result = ""
for byte in input:
result = result + lookup[byte]
return result
def hex_string_to_hex_value(input):
bin_string = hex_string_to_bin_string(input)
bin_value = bin_string_to_bin_value(bin_string)
return hex(int(bin_value, 2))
他們似乎很好。
print hex_string_to_hex_value("FF")
print hex_string_to_hex_value("")
print bin_string_to_bin_value("11010001101011")
結果:
0xff
0x1234567
0b11010001101011
bin_value_to_hex_string在哪裏? – 2015-07-10 09:56:33
使用Python的binascii模塊
import binascii
binFile = open('somebinaryfile.exe','rb')
binaryData = binFile.read(8)
print binascii.hexlify(binaryData)
- 1. 將字符串轉換爲十六進制到十六進制
- 2. 將二進制長字符串轉換爲十六進制c#
- 3. 轉換十六進制字符串爲二進制的SQL Server
- 4. 字符串爲十六進制和十六進制轉換爲字符串
- 5. 從十六進制字符串轉換爲十六進制字符數組
- 6. 十六進制轉換爲二進制
- 7. 轉換十六進制字符串十六進制值
- 8. 從六進制十進制值轉換爲字符串
- 9. 如何將十六進制字符串轉換爲十進制?
- 10. 將十六進制字符串轉換爲32位二進制字符串
- 11. 將十六進制字符串轉換爲二進制字符串
- 12. 二進制轉換爲十六進制和十六進制轉換爲二進制
- 13. C#字符串爲十六進制,十六進制到字節轉換
- 14. 字符串轉換爲從ANSI /十六進制字符串
- 15. 十進制數字符串轉換爲十六進制的字符串
- 16. 二進制到十六進制轉換
- 17. 十六進制到二進制轉換
- 18. 將十進制轉換爲十六進制和十六進制
- 19. JAVA轉換十六進制字符串
- 20. 十六進制ASCII字符串轉換
- 21. 將十六進制轉換爲二進制,然後轉換爲十進制
- 22. Python熊貓子集十六進制字符串,轉換爲十進制
- 23. 轉換十六進制字符串轉換爲十進制在C++
- 24. Linux shell腳本:十六進制數字轉換爲二進制字符串
- 25. C# - 轉換十六進制值的字符串爲十六進制
- 26. 如何將十六進制字符串轉換爲十六進制?
- 27. 如何轉換十六進制字符串爲十六進制數
- 28. 十六進制字符串到二進制字符串
- 29. Ruby:十六進制字符串到二進制字符串
- 30. 十進制/十六進制/二進制轉換
這未能保持領先的0。 – 2010-01-15 14:58:26
@Ignacio,你說得對,但我不認爲OP會問這個。在任何情況下,++都會指出你的答案。 – 2010-01-15 16:14:38
@Eli:OP明確表示他想要'048d',即想要領先0,不想要0x – 2010-01-15 20:44:07