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