在python中附加2个十六进制值

Ram*_*Ram 7 python string hex

我试图在 python 中附加一些十六进制值,我似乎总是在数字之间得到 0x。从我搜索的内容来看,如果不将其转换为一系列值,这是不可能的?我不确定。

a = 0x7b
b = 0x80000
hex(a) + hex(b) = 0x7b0x80000
Run Code Online (Sandbox Code Playgroud)

我不想要中间的 0x - 我需要,0x7b80000. 有没有其他方法可以做到这一点?如果我转换为整数,我会得到两者的总和并将其转换为十六进制与0x7b80000

Jon*_*art 5

我认为您不想“附加”它们。使用字符串进行整数运算是一个坏主意。我认为你想将位移a到正确的位置并将它们或在一起:

>>> a = 0x7B
>>> b = 0x80000
>>>
>>> hex( (a<<20) | b )
'0x7b80000'
Run Code Online (Sandbox Code Playgroud)

也许如果您更具体地了解这些数字是什么以及您到底想要实现什么目标,我可以提供更笼统的答案。


Ser*_*lis 2

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)))
Run Code Online (Sandbox Code Playgroud)

基本上你必须找到最高的设置位b
将该数字与 的最大倍数对齐,4因为这就是hex字符。
将 附加a到之前找到的 4 的最大倍数的前面。