Flutter - 将十六进制转换为带符号 2 的补码的十进制

问题描述 投票:0回答:1

我正在尝试将十六进制值转换为十进制,并且我能够使用

int.parse('8E', radix: 16)
进行转换,但我无法从有符号 2 的补码中获取小数。 如果转换8E(十六进制): 我从这个
int.parse('8E', radix: 16)
得到的是142。 我想要的是-114

请使用此转换器作为参考 - https://www.rapidtables.com/convert/number/hex-to-decimal.html

有人可以帮我从有符号 2 的补码中得到小数吗?

dart hex decimal
1个回答
0
投票

您的问题是

int.parse
返回一个 64 位有符号整数,而您的十六进制值代表一个有符号 8 位值。

通过进行“位”位移,我们可以转换该值,使数值与所表示的 8 位值相同:

void main() {
  int value = (int.parse('8E', radix: 16) << 56) >> 56;
  print(value); // -114
}
© www.soinside.com 2019 - 2024. All rights reserved.