我想创建一个浮点数的二进制表示,并能够在需要时解析该数字。通过"二进制表示"我的意思并不是" 0.00101
"但类似于" 101000101
",也就是说,0
&{39}和1
没有小数点分隔符。我需要一种方法,在String
中为double
创建此类表示,并解析double
的{{1}}。
请不要提及X Y问题,因为我确实需要这种方法(例如"无符号二进制值")。
提前谢谢。
Convert Double to Binary representation?似乎解决了将String
解析为double
的问题,但我仍然需要帮助做相反的事情:从二进制到String
。
答案 0 :(得分:2)
要将RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [QSA,NC,L]
RewriteRule ^.*$ index.php [QSA,NC,L]
的位转换为double
,您可以使用Double.doubleToLongBits
,这会创建String
,其位数与long
相同,然后Long.toBinaryString
将其转换为double
,其中的位为字符。
String
输出:double test = 0.5;
long doubleBits = Double.doubleToLongBits(test);
String doubleBitsStr = Long.toBinaryString(doubleBits);
System.out.println(doubleBitsStr);
要转换回来,请使用基数为11111111100000000000000000000000000000000000000000000000000000
和Long.parseLong
的Double.longBitsToDouble
。
2
输出:doubleBits = Long.parseLong(doubleBitsStr, 2);
test = Double.longBitsToDouble(doubleBits);
System.out.println(test);
要将0.5
的位转换为float
,您可以使用Float.floatTointBits
,这会创建String
,其位数与int
相同,然后Integer.toBinaryString
将其转换为float
,其中的位为字符。
String
输出:float test2 = 0.5f;
int intBits = Float.floatToIntBits(test2);
String intBitsStr = Integer.toBinaryString(intBits);
System.out.println(intBitsStr);
要转换回来,请使用基数为111111000000000000000000000000
和Integer.parseInt
的Float.intBitsToFloat
。
2
输出:intBits = Integer.parseInt(intBitsStr, 2);
test2 = Float.intBitsToFloat(intBits);
System.out.println(test2);
答案 1 :(得分:0)
Integer.toBinaryString(Float.floatToIntBits(yourNumber));
不起作用吗?