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

Flutter中如何将十六进制转换为有符号二进制补码十进制?

解决8位十六进制补码转有符号十进制的问题

Dart的int.parse默认会将十六进制字符串解析为无符号的任意精度整数,所以'8E'会得到无符号值142。要得到8位有符号二进制补码对应的十进制值,需要手动处理符号位:

  • 先解析为无符号整数:final unsigned = int.parse('8E', radix: 16);(结果为142)
  • 判断是否超出8位有符号数的最大值(0x7F,即十进制127):如果无符号值大于0x7F,说明是负数,用无符号值 - 2^8(即0x100)计算补码对应的负数

具体代码示例:

String hexValue = '8E';
int unsignedInt = int.parse(hexValue, radix: 16);
int signedInt = unsignedInt > 0x7F ? unsignedInt - 0x100 : unsignedInt;
print(signedInt); // 输出-114

如果需要处理其他长度的补码(比如16位、32位),只需替换对应的阈值和模值:

  • 16位:最大值为0x7FFF,模值为0x10000
  • 32位:最大值为0x7FFFFFFF,模值为0x100000000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:35:53