我正在尝试将十六进制值转换为十进制,并且我能够使用
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 的补码中得到小数吗?
您的问题是
int.parse
返回一个 64 位有符号整数,而您的十六进制值代表一个有符号 8 位值。
通过进行“位”位移,我们可以转换该值,使数值与所表示的 8 位值相同:
void main() {
int value = (int.parse('8E', radix: 16) << 56) >> 56;
print(value); // -114
}