如何将float转换为字节数组,反之亦然? [英] How to convert a float into a byte array and vice versa?

查看:166
本文介绍了如何将float转换为字节数组,反之亦然?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to convert a float into a primitive byte[] and vice versa:

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 [] 返回 float ,结果只不过是垃圾。

Oddly enough, when I try to shift the newly allocated byte[] back into a float, the result is nothing but rubbish.

但是,当我使用原始 long 数据类型作为参数时,似乎同样的算法工作正常。

However, it would appear as if the same algorithm works just fine when I use the primitive long data type as argument instead.

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();
}

这篇关于如何将float转换为字节数组,反之亦然?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆