Java - Float을 Byte 배열로 변환, Byte배열을 float으로 변환

JS · 25 Oct 2020

Float을 Byte array로 변환하거나, Byte array를 Float으로 변환하는 방법을 소개합니다.

접근 방법

Java에서 Float과 Integer는 4바이트입니다.

Float.floatToIntBits()으로 Float을 Integer로 변환할 수 있습니다. 바이트가 동일하기 때문에 데이터 손실이 없습니다.

Integer는 Bit Shift 연산자를 이용하여 Byte array로 변환할 수 있습니다.

Float을 Byte Array로 변환

먼저 Float.floatToIntBits()으로 Float을 Integer로 변환합니다. 그리고 Bit Shift 연산자로 Integer를 Byte Array로 변환합니다.

public static byte[] floatToByteArray(float value) {
    int intBits =  Float.floatToIntBits(value);
    return new byte[] {
            (byte) (intBits >> 24),
            (byte) (intBits >> 16),
            (byte) (intBits >> 8),
            (byte) (intBits) };
}

다음과 같이 변환할 수 있습니다.

float floatNum = 1234.567f;
byte[] floatByteArr = floatToByteArray(floatNum);

Byte Array를 Float으로 변환

Bit Shift 연산자로 Byte Array를 Integer로 변환합니다. 그 뒤에, Float.intBitsToFloat()으로 Integer를 Float으로 변환합니다.

public static float byteArrayToFloat(byte[] bytes) {
    int intBits = bytes[0] << 24
                    | (bytes[1] & 0xFF) << 16
                    | (bytes[2] & 0xFF) << 8
                    | (bytes[3] & 0xFF);
    return Float.intBitsToFloat(intBits);
}

다음과 같이 사용할 수 있습니다.

float floatNum = 1234.567f;
byte[] floatByteArr = floatToByteArray(floatNum);
float convertedFloat = byteArrayToFloat(floatByteArr );

System.out.println(convertedFloat);

Output:

1234.567
댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha