2017-01-31 66 views
-1

我想要一個32位的字符串轉換爲十進制...想要在Java中將32位IEEE字符串轉換爲十進制。

示例: 「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

你爲什麼要從float - > int - > long?選一個 –

+0

它是一個浮點值還是整數/長整型值?您的示例還不清楚 – Optimus

+0

我想將表示IEEE 32位浮點的32位字符串轉換爲十進制。 我應該如何更改上面的代碼? –

回答

0

你需要做三件事情。

  • 讀取字符串中的0和1作爲int
  • 使用intBitsToFloatint轉換爲float
  • float轉換爲小數(BigDecimal)。

int bits = Integer.parseInt(s,2); 
float value = Float.intBitsToFloat(bits); 
BigDecimal asDecimal = BigDecimal.valueOf(value); 
1

32位數字作爲字符串可以做

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

試圖解析相同的字符串作爲浮法將打破由於浮子

被定義爲符號+指數轉換時被解析成一個整數+尾數這是一個完全不同的表示形式比2補碼簽署int

+0

不,OP在評論中說過,二進制字符串是'float'表示,而不是他的數字的'int'表示。這不符合他所要求的。 –

相關問題