-1

我正在尝试将 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));

有什么建议吗?

4

2 回答 2

1

32位数字作为字符串可以在执行时解析为整数

String s = "00111111100000000000000000000000";
int myInt= Integer.parseInt(s, 2);

尝试解析与 float 相同的字符串会破坏转换,因为 float

被定义为符号 + 指数 + 尾数,这是与 2 补码有符号整数完全不同的表示

于 2017-01-31T19:03:34.210 回答
0

你需要做三件事。

  • 将字符串中的 0 和 1 读取为int.
  • 用于intBitsToFloat将 转换intfloat.
  • 将 转换float为小数 ( BigDecimal)。

.

int bits = Integer.parseInt(s,2);
float value = Float.intBitsToFloat(bits);
BigDecimal asDecimal = BigDecimal.valueOf(value);
于 2017-01-31T19:16:29.570 回答