将十六进制字节串转换为有符号的十进制整数的Python代码

将十六进制字节串转换为有符号的十进制整数的Python代码

def hex_to_signed_decimal(hex_str):
    decimal = int(hex_str, 16)
    if decimal > 0x7fffffff:
        decimal -= 0x100000000
    return decimal  

这个函数接受一个十六进制字节串,然后将其转换为有符号的十进制整数并返回。它通过检查转换后的值是否超过了231来确定其是否应当被解释为负数,如果是的话,就从232减去该值来获得其补码表示的大小。以下是一个代码示例:

>>> hex_str = 'fffffffe'
>>> hex_to_signed_decimal(hex_str)
-2

字节合并

data = b'\xff\xf9"0'    # b'\xff\xf9"0'
bytes.hex(data)         #'fff92230'

#不考虑补码问题
int(bytes.hex(b'\xff\xf9"0'), 16)  #4294517296     

#考虑补码问题
def hex_to_signed_decimal(hex_str):
    decimal = int(hex_str, 16)
    if decimal > 0x7fffffff:
        decimal -= 0x100000000
    return decimal

hex_to_signed_decimal(bytes.hex(b'\xff\xf9"0'))      #-450000

将十六进制字符串转换为一个整数
首先使用 int() 函数将十六进制字符串转换为一个整数。接着,它使用了字符串格式化操作符 % 将该整数编码为带有至少 8 位的 16 进制字符串。

hex_string = '00003bce'
decimal_number = int(hex_string, 16)
formatted_string = '%08x' % decimal_number
print(formatted_string)
00003bce
hex_str = '0x1'
hex_num = int(hex_str, 16)
print(hex(hex_num))
0x1

你可能感兴趣的:(python)