Как конвертировать из 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)