将浮点数写成小端格式吗?

问题描述 投票:1回答:2
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);
}

我正在使用上面的两种方法来编写shortint

我的问题是:如何编写float

java endianness
2个回答
2
投票

您可以使用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选择的位)表示浮点数的有效数字(有时称为尾数)。


0
投票

对于Kotlin的用户,这只是对arshajii的补充回答:

0x7f800000

读取功能可以简化为:

0x007fffff
© www.soinside.com 2019 - 2024. All rights reserved.