我正在尝试将32位数字符串转换为小数......
实施例: “00111111100000000000000000000000”> 1 和 “01000001101000000000000000000000”> 20
我正在尝试下面的代码,但我得到的结果是完全错误的。 “00111111100000000000000000000000”> 2147483647
String s = "00111111100000000000000000000000"
float fl = Float.parseFloat(s);
int bits = Math.round(Math.abs(fl));
decTextView.setText(Long.toString(bits));
有任何建议吗?
答案 0 :(得分:1)
32位数字作为字符串可以在执行
时解析为整数String s = "00111111100000000000000000000000";
int myInt= Integer.parseInt(s, 2);
尝试解析与float相同的字符串将破坏自浮动后的转换
被定义为 sign + exponent + mantissa ,这是一个完全不同的表示形式,而不是2补充符号int
答案 1 :(得分:0)
你需要做三件事。
int
。intBitsToFloat
将int
转换为float
。float
转换为小数(BigDecimal
)。
int bits = Integer.parseInt(s,2);
float value = Float.intBitsToFloat(bits);
BigDecimal asDecimal = BigDecimal.valueOf(value);