如何将浮点数转换为字节数组,反之亦然?

我正在尝试将a float转换为原始类型byte[],反之亦然:

public byte[] floatToByteArray(final float value)

{

return new byte[]

{

(byte) (value >> 56),

(byte) (value >> 48),

(byte) (value >> 40),

(byte) (value >> 32),

(byte) (value >> 24),

(byte) (value >> 16),

(byte) (value >> 8),

(byte) (value)

};

}

奇怪的是,当我尝试将新分配的分配byte[]回a时float,结果不过是垃圾。

但是,当我使用原始long数据类型作为参数时,似乎相同的算法工作得很好。

public byte[] longToByteArray(final long value)

{

return new byte[]

{

(byte) (value >> 56),

(byte) (value >> 48),

(byte) (value >> 40),

(byte) (value >> 32),

(byte) (value >> 24),

(byte) (value >> 16),

(byte) (value >> 8),

(byte) (value)

};

}

回答:

改用这些。

public static byte [] long2ByteArray (long value)

{

return ByteBuffer.allocate(8).putLong(value).array();

}

public static byte [] float2ByteArray (float value)

{

return ByteBuffer.allocate(4).putFloat(value).array();

}

以上是 如何将浮点数转换为字节数组,反之亦然? 的全部内容, 来源链接: utcz.com/qa/398432.html

回到顶部