Skip to content

Commit effde80

Browse files
SmartyAnshEugen
authored and
Eugen
committed
BAEL - 2420 Converting Float to Byte Array and vice-versa in Java (eugenp#6194)
* Hexagonal Architecture in Java - Spring boot app * create README.md * Update README.md * Update README.md * BAEL-2420 Converting Float to Byte Array and vice-versa in Java * BAEL-2420 Converting Float to Byte Array and vice-versa in Java - conversions package added * Hexagonal architecture code removed
1 parent 7fa2aba commit effde80

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.baeldung.array.conversions;
2+
3+
import java.nio.ByteBuffer;
4+
5+
public class FloatToByteArray {
6+
7+
/**
8+
* convert float into byte array using Float API floatToIntBits
9+
* @param value
10+
* @return byte[]
11+
*/
12+
public static byte[] floatToByteArray(float value) {
13+
int intBits = Float.floatToIntBits(value);
14+
return new byte[] {(byte) (intBits >> 24), (byte) (intBits >> 16), (byte) (intBits >> 8), (byte) (intBits) };
15+
}
16+
17+
/**
18+
* convert byte array into float using Float API intBitsToFloat
19+
* @param bytes
20+
* @return float
21+
*/
22+
public static float byteArrayToFloat(byte[] bytes) {
23+
int intBits = bytes[0] << 24 | (bytes[1] & 0xFF) << 16 | (bytes[2] & 0xFF) << 8 | (bytes[3] & 0xFF);
24+
return Float.intBitsToFloat(intBits);
25+
}
26+
27+
/**
28+
* convert float into byte array using ByteBuffer
29+
* @param value
30+
* @return byte[]
31+
*/
32+
public static byte[] floatToByteArrayWithByteBuffer(float value) {
33+
return ByteBuffer.allocate(4).putFloat(value).array();
34+
}
35+
36+
/**
37+
* convert byte array into float using ByteBuffer
38+
* @param bytes
39+
* @return float
40+
*/
41+
public static float byteArrayToFloatWithByteBuffer(byte[] bytes) {
42+
return ByteBuffer.wrap(bytes).getFloat();
43+
}
44+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.baeldung.array.conversions;
2+
3+
import static com.baeldung.array.conversions.FloatToByteArray.byteArrayToFloat;
4+
import static com.baeldung.array.conversions.FloatToByteArray.byteArrayToFloatWithByteBuffer;
5+
import static com.baeldung.array.conversions.FloatToByteArray.floatToByteArray;
6+
import static com.baeldung.array.conversions.FloatToByteArray.floatToByteArrayWithByteBuffer;
7+
import static org.junit.Assert.assertArrayEquals;
8+
import static org.junit.Assert.assertEquals;
9+
import org.junit.Test;
10+
11+
public class FloatToByteArrayUnitTest {
12+
13+
@Test
14+
public void givenAFloat_thenConvertToByteArray() {
15+
assertArrayEquals(new byte[] { 63, -116, -52, -51}, floatToByteArray(1.1f));
16+
}
17+
18+
@Test
19+
public void givenAByteArray_thenConvertToFloat() {
20+
assertEquals(1.1f, byteArrayToFloat(new byte[] { 63, -116, -52, -51}), 0);
21+
}
22+
23+
@Test
24+
public void givenAFloat_thenConvertToByteArrayUsingByteBuffer() {
25+
assertArrayEquals(new byte[] { 63, -116, -52, -51}, floatToByteArrayWithByteBuffer(1.1f));
26+
}
27+
28+
@Test
29+
public void givenAByteArray_thenConvertToFloatUsingByteBuffer() {
30+
assertEquals(1.1f, byteArrayToFloatWithByteBuffer(new byte[] { 63, -116, -52, -51}), 0);
31+
}
32+
33+
@Test
34+
public void givenAFloat_thenConvertToByteArray_thenConvertToFloat() {
35+
float floatToConvert = 200.12f;
36+
byte[] byteArray = floatToByteArray(floatToConvert);
37+
assertEquals(200.12f, byteArrayToFloat(byteArray), 0);
38+
}
39+
40+
@Test
41+
public void givenAFloat_thenConvertToByteArrayWithByteBuffer_thenConvertToFloatWithByteBuffer() {
42+
float floatToConvert = 30100.42f;
43+
byte[] byteArray = floatToByteArrayWithByteBuffer(floatToConvert);
44+
assertEquals(30100.42f, byteArrayToFloatWithByteBuffer(byteArray), 0);
45+
}
46+
}

0 commit comments

Comments
 (0)