OLE*_*SHA 1 java floating-point binary
我想创建浮点数的二进制表示形式,并能够在需要时解析该数字。我所说的“二进制表示”并不是指“ 0.00101”,而是类似“ 101000101”的东西,也就是说,由0s 和1s 组成的序列,没有小数点分隔符。我需要一种方法来在Stringfor a中创建此类表示double并解析 adouble的 a String。请不要提及 XY 问题,因为我确实需要此方法(类似于“无符号二进制值”)。
先感谢您。
将双精度转换为二进制表示形式?double似乎解决了解析到的问题String,但我仍然需要帮助做相反的事情:从二进制到double.
要将 a 的位转换double为 a String,您可以使用Double.doubleToLongBits,它创建long与 具有相同位的a double,然后将Long.toBinaryString其转换为 a String,其中位作为字符。
double test = 0.5;
long doubleBits = Double.doubleToLongBits(test);
String doubleBitsStr = Long.toBinaryString(doubleBits);
System.out.println(doubleBitsStr);
Run Code Online (Sandbox Code Playgroud)
输出:11111111100000000000000000000000000000000000000000000000000000
要转换回来,请使用Long.parseLong基数2和Double.longBitsToDouble。
doubleBits = Long.parseLong(doubleBitsStr, 2);
test = Double.longBitsToDouble(doubleBits);
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)
输出:0.5
要将 a 的位转换float为 a String,您可以使用Float.floatTointBits,它创建int与 具有相同位的an float,然后将Integer.toBinaryString其转换为 a ,String其中位作为字符。
float test2 = 0.5f;
int intBits = Float.floatToIntBits(test2);
String intBitsStr = Integer.toBinaryString(intBits);
System.out.println(intBitsStr);
Run Code Online (Sandbox Code Playgroud)
输出:111111000000000000000000000000
要转换回来,请使用Integer.parseInt基数2和Float.intBitsToFloat。
intBits = Integer.parseInt(intBitsStr, 2);
test2 = Float.intBitsToFloat(intBits);
System.out.println(test2);
Run Code Online (Sandbox Code Playgroud)
输出:0.5
| 归档时间: |
|
| 查看次数: |
3365 次 |
| 最近记录: |