You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将十六进制字符串转换为有符号整数?

十六进制字符串转8位有符号整数的实现方法

你现在的代码把十六进制字符串"bd"转成了无符号整数189,要得到对应的8位有符号整数-67,核心是遵循8位有符号数的溢出规则:8位有符号整数的范围是-128到127,当无符号值大于等于128时,减去2^8(即256)就能得到对应的有符号值。

这里提供两种实用的实现方式:

方法一:手动计算转换

先将十六进制转成无符号整数,再根据范围判断调整:

s = "bd"
unsigned_val = int(s, 16)
signed_val = unsigned_val - 256 if unsigned_val >= 128 else unsigned_val
print(signed_val)  # 输出:-67

方法二:使用struct标准库

利用Python内置的struct模块直接解析为有符号整数,这种方式还能方便扩展到其他位数的有符号转换:

import struct

s = "bd"
# 'b'表示解析为8位有符号整数,bytes.fromhex(s)将十六进制字符串转为字节
signed_val = struct.unpack('b', bytes.fromhex(s))[0]
print(signed_val)  # 输出:-67

如果需要处理16位、32位的有符号转换,只需把struct.unpack的格式符换成'h'(16位)或'i'(32位),注意对应十六进制字符串的长度要匹配位数要求。

内容的提问来源于stack exchange,提问作者Othman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:45:32