我想在python中追加一些十六進制值,而且我總是在數字之間得到0x。從我搜索的內容來看,要麼沒有將它轉化爲一個值的亮度是不可能的我不確定。在python中追加2個十六進制值
a = 0x7b
b = 0x80000
hex(a) + hex(b) = 0x7b0x80000
我不想在中間的0X - 我需要,0x7b80000
。有沒有其他方法可以做到這一點?如果我轉換爲整數,我得到的兩個總和,並將其轉換爲十六進制是一個不同的值比0x7b80000
我想在python中追加一些十六進制值,而且我總是在數字之間得到0x。從我搜索的內容來看,要麼沒有將它轉化爲一個值的亮度是不可能的我不確定。在python中追加2個十六進制值
a = 0x7b
b = 0x80000
hex(a) + hex(b) = 0x7b0x80000
我不想在中間的0X - 我需要,0x7b80000
。有沒有其他方法可以做到這一點?如果我轉換爲整數,我得到的兩個總和,並將其轉換爲十六進制是一個不同的值比0x7b80000
這是更通用的方式來追加hex
/int
/bin
值。
僅適用於b
的正值。
a = 0x7b
b = 0x80000
def append_hex(a, b):
sizeof_b = 0
# get size of b in bits
while((b >> sizeof_b) > 0):
sizeof_b += 1
# align answer to nearest 4 bits (hex digit)
sizeof_b += sizeof_b % 4
return (a << sizeof_b) | b
print(hex(append_hex(a, b)))
基本上你必須找到b
所具有的最高設置位。
將該數字與4
的最高倍數對齊,因爲那是hex
字符。
將a
追加到前面找到的4的最高倍數的前面。
我不認爲你想「追加」他們。使用字符串進行整數運算是一個壞主意。我想你想位移位a
到正確的地方,或者將它們一起:
>>> a = 0x7B
>>> b = 0x80000
>>>
>>> hex((a<<20) | b)
'0x7b80000'
或許,如果你是更具體的瞭解,你要完成,我可以提供一個更加這些數字是什麼,究竟是什麼一般答案。
儘管此方法適用於他提供的數字,但請在「a = 0x32」,「b = 0x32」處嘗試。假設20 ==比特大小b – Serdalis 2013-03-26 04:54:49
謝謝!!!那工作。所以,我有兩個十六進制值,我需要在正確的位位置創建一個包含這些值的字符串。對於誤導性問題抱歉。我可以給一個概述 - 我有一個文件,其中每行有兩個十六進制值,並且看到這些值,腳本應該通過將這些值放在正確的位置來創建一個字符串。例如:32位字符串,其中0-8位將讀取0x7b,而10- 30位將讀取0x80000。 ' – Ram 2013-03-26 05:25:28
@ Serdalis - 我明白了,所以當我按照你說的去做時,它會在前面追加零。 – Ram 2013-03-26 05:28:59
感謝這也工作! – Ram 2013-03-26 05:26:24
'append_hex'對於與十六進制無關的東西來說名字很差。 – 2016-03-05 00:14:00
@JonathonReinhart我不明白你的意見。它遲了3年,沒有建設性。 – Serdalis 2016-03-05 11:42:05