Подтвердить что ты не робот

Как конвертировать из float в 4 байта в Java?

Мне не удалось преобразовать что-то вроде этого:

byte[] b = new byte[] { 12, 24, 19, 17};

в нечто подобное:

float myfloatvalue = ?;

Может кто-нибудь, пожалуйста, приведу пример?

Также как включить этот float обратно в байты?

4b9b3361

Ответ 1

От byte[]float вы можете сделать:

byte[] b = new byte[] { 12, 24, 19, 17};
float myfloatvalue = ByteBuffer.wrap(b).getFloat();

Ниже приведена альтернатива использованию ByteBuffer.allocate для преобразования floatbyte[]:

int bits = Float.floatToIntBits(myFloat);
byte[] bytes = new byte[4];
bytes[0] = (byte)(bits & 0xff);
bytes[1] = (byte)((bits >> 8) & 0xff);
bytes[2] = (byte)((bits >> 16) & 0xff);
bytes[3] = (byte)((bits >> 24) & 0xff);

Ответ 2

byte[]float

С ByteBuffer:

byte[] b = new byte[]{12, 24, 19, 17};
float f =  ByteBuffer.wrap(b).getFloat();

floatbyte[]

Обратное действие (зная результат выше):

float f =  1.1715392E-31f;
byte[] b = ByteBuffer.allocate(4).putFloat(f).array();  //[12, 24, 19, 17]