public static void writeShortLE(DataOutputStream out, short value) {
out.writeByte(value & 0xFF);
out.writeByte((value >> 8) & 0xFF);
}
public static void writeIntLE(DataOutputStream out, int value) {
out.writeByte(value & 0xFF);
out.writeByte((value >> 8) & 0xFF);
out.writeByte((value >> 16) & 0xFF);
out.writeByte((value >> 24) & 0xFF);
}
我正在使用上面的两种方法来编写short
和int
。
我的问题是:如何编写float
?
您可以使用Float.floatToRawIntBits
获得由给定Float.floatToRawIntBits
参数的位组成的int
,然后通过float
编写that:
writeIntLE
要读取public static void writeFloatLE(DataOutputStream out, float value) {
writeIntLE(Float.floatToRawIntBits(value));
}
,您可以读取float
,然后使用int
从中获取Float.intBitsToFloat
值。
从Float.intBitsToFloat
的链接文档中:
根据IEEE 754浮点“单一格式”位布局返回指定的浮点值的表示,并保留非数字(
float
)值。位31(由掩码
Float.floatToRawIntBits
选择的位)表示浮点数的符号。位30-23(由掩码NaN
选择的位)表示指数。位22-0(由掩码0x80000000
选择的位)表示浮点数的有效数字(有时称为尾数)。
对于Kotlin的用户,这只是对arshajii的补充回答:
0x7f800000
读取功能可以简化为:
0x007fffff