2015-05-01 128 views
0

我想創建一個浮點數的二進制表示,並能夠在需要時解析該數字。通過「二進制表示」,我不是指「0.00101」,而是指「101000101」,也就是說,沒有小數點分隔符的01。我需要一種方法來在String中爲double創建此類表示,並解析Stringdouble。 請不要提及X Y問題,因爲我確實需要這種方法(類似於「無符號二進制值」)。如何從Java中的二進制表示中獲取浮點數?

預先感謝您。

Convert Double to Binary representation?似乎與解析doubleString來解決這個問題,但我仍然需要做相反的幫助:從二元到double

+0

你嘗試過什麼到目前爲止? – JonasCz

+0

當然,我可以創建自己的方式來存儲double的,但我需要規範的方法 – OLEGSHA

回答

2

要將double的位轉換爲String,你可以使用Double.doubleToLongBits,創建具有相同位作爲double一個long,隨後Long.toBinaryString將其與比特字符轉換爲String

double test = 0.5; 
long doubleBits = Double.doubleToLongBits(test); 
String doubleBitsStr = Long.toBinaryString(doubleBits); 
System.out.println(doubleBitsStr); 

輸出:11111111100000000000000000000000000000000000000000000000000000

要轉換回來,用Long.parseLong2Double.longBitsToDouble基數。

doubleBits = Long.parseLong(doubleBitsStr, 2); 
test = Double.longBitsToDouble(doubleBits); 
System.out.println(test); 

輸出:0.5

要將float的位轉換爲String,你可以使用Float.floatTointBits,創建具有相同位作爲floatint,其次是Integer.toBinaryString將其轉換爲一個String以位爲字符。

float test2 = 0.5f; 
int intBits = Float.floatToIntBits(test2); 
String intBitsStr = Integer.toBinaryString(intBits); 
System.out.println(intBitsStr); 

輸出:111111000000000000000000000000

要轉換回來,用Integer.parseInt2Float.intBitsToFloat基數。

intBits = Integer.parseInt(intBitsStr, 2); 
test2 = Float.intBitsToFloat(intBits); 
System.out.println(test2); 

輸出:0.5

0

Integer.toBinaryString(Float.floatToIntBits(yourNumber));不工作?

相關問題