想要在 Java 中将 32 位 IEEE 字符串转换为十进制。
Want to convert a 32 bit IEEE String to decimal in Java.
我正在尝试将 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));
有什么建议吗?
32位数字作为String在做的时候可以解析成整数
String s = "00111111100000000000000000000000";
int myInt= Integer.parseInt(s, 2);
尝试解析与 float 相同的字符串会破坏转换,因为 float
被定义为 sign + exponent + mantissa 这与 2 complement signed int
完全不同
你需要做三件事。
- 读取字符串中的 0 和 1 作为
int
。
- 使用
intBitsToFloat
将 int
转换为 float
。
- 将
float
转换为小数 (BigDecimal
)。
.
int bits = Integer.parseInt(s,2);
float value = Float.intBitsToFloat(bits);
BigDecimal asDecimal = BigDecimal.valueOf(value);
我正在尝试将 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));
有什么建议吗?
32位数字作为String在做的时候可以解析成整数
String s = "00111111100000000000000000000000";
int myInt= Integer.parseInt(s, 2);
尝试解析与 float 相同的字符串会破坏转换,因为 float
被定义为 sign + exponent + mantissa 这与 2 complement signed int
完全不同你需要做三件事。
- 读取字符串中的 0 和 1 作为
int
。 - 使用
intBitsToFloat
将int
转换为float
。 - 将
float
转换为小数 (BigDecimal
)。
.
int bits = Integer.parseInt(s,2);
float value = Float.intBitsToFloat(bits);
BigDecimal asDecimal = BigDecimal.valueOf(value);