俗话说前人栽树后人乘凉,感谢@zfxinli大哥,感谢提供思路,https://blog.csdn.net/zfxinli/article/details/4396537
感谢@cumubi7552大哥对intBitsToFloat函数细致入微的讲解。https://blog.csdn.net/cumubi7552/article/details/107799726
在zfxinli的文章中,直接贴出了代码
String hex="637F813F";
Float value=Float.intBitsToFloat(Integer.valueOf(hex, 16));
其中主要使用了两个函数intBitsToFloat() 和valueOf()。
intBitsToFloat()方法是一个静态方法,遵循IEEE 754浮点标准,并且根据标准,它返回与表示整数位表示形式的给定参数相对应的浮点值,也可以使用类名进行访问,如果尝试使用类对象访问该方法,那么也不会出错。
valueOf()方法 用于返回给定参数的原生 Number 对象值,参数可以是原生数据类型, String等。该方法是静态方法。该方法可以接收两个参数一个是字符串,一个是基数。在本示例中,使用了如下格式
Integer valueOf(String s, int radix): 返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。(此外valueOf还有两种形式,在这不再赘述)
String s是将要被转换的字符串;radix是指将要被转换的字符串的进制数。
首先通过valueOf函数将字符串hex 转化为10进制数(637F813F=>1669300543),然后使用intBitsToFloat()将1669300543转为4.713233E21,得到符合IEEE754标准浮点值。