Как конвертировать из float в 4 байта в Java? Мне не удалось преобразовать что-то вроде этого: byte[] b = new byte[] { 12, 24, 19, 17}; в нечто подобное: float myfloatvalue = ?; Может кто-нибудь, пожалуйста, приведу пример? Также как включить этот float обратно в байты? Ответ 1 От byte[] → float вы можете сделать: byte[] b = new byte[] { 12, 24, 19, 17}; float myfloatvalue = ByteBuffer.wrap(b).getFloat(); Ниже приведена альтернатива использованию ByteBuffer.allocate для преобразования float → byte[]: 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(); float → byte[] Обратное действие (зная результат выше): float f = 1.1715392E-31f; byte[] b = ByteBuffer.allocate(4).putFloat(f).array(); //[12, 24, 19, 17] Ответ 3 Преобразуйте байты в int и используйте Float.intBitsToFloat() http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Float.html#intBitsToFloat(int)
Ответ 1 От byte[] → float вы можете сделать: byte[] b = new byte[] { 12, 24, 19, 17}; float myfloatvalue = ByteBuffer.wrap(b).getFloat(); Ниже приведена альтернатива использованию ByteBuffer.allocate для преобразования float → byte[]: 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(); float → byte[] Обратное действие (зная результат выше): float f = 1.1715392E-31f; byte[] b = ByteBuffer.allocate(4).putFloat(f).array(); //[12, 24, 19, 17]
Ответ 3 Преобразуйте байты в int и используйте Float.intBitsToFloat() http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Float.html#intBitsToFloat(int)