2014-06-09 171 views
1
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寫小寫字母浮動文件?

+0

你的意思是使用IEEE標準的單精度? – CMPS

+0

你應該看看ByteBuffer。 –

回答

2

您可以使用Float.floatToRawIntBits獲得int由給定float參數的位,然後寫通過writeIntLE

public static void writeFloatLE(DataOutputStream out, float value) { 
    writeIntLE(Float.floatToRawIntBits(value)); 
} 

讀回float,你可以閱讀int和使用Float.intBitsToFloat從中獲取float的值。


Float.floatToRawIntBits鏈接文檔:

返回根據IEEE 754浮點「單一格式」位佈局中指定的浮點值的表示,保留不-α-編號(NaN)的值。

位31(由掩碼0x80000000選擇的位)表示浮點數的符號。位30-23(由掩碼0x7f800000選擇的位)表示指數。位22-0(由掩碼0x007fffff選擇的位)表示浮點數的有效位(有時稱爲尾數)。

+1

如果你解釋了它的作用,這將是一個更好的答案。它只是反轉浮點中的字節? –

+0

@RobertHarvey這就是爲什麼我鏈接到文檔。無論如何,我很樂意在答案的正文中更詳細地介紹。 – arshajii

+1

感謝這個文檔真的有用:D – user2637015