상세 컨텐츠

본문 제목

자바 DATA TYPE의 BYTE 크기 및 범위

언어/Java

by codeon 2024. 5. 28. 22:59

본문

반응형

JAVA 기본적인 데이터 타입별 byte size 및 숫자 범위를 확인해 봐야 할 필요가 있습니다. 외부에서 들어오는 byte형식의 데이터는 자바 기본 타입으로 형변환이 필요한데 원천이되는 byte가 시스템별로 인코딩 타입이 다르고 그 바이트 나열이 LITTLE_ENDIAN 또는 BIG_ENDIAN 등등 다양한 내용을 구분해 형변환이 필요합니다. 이제부터 그 내용을 확인하는 법에 대해 알아보도록 하겠습니다.

 

Int형 123456789 숫자 4byte little edian의 표

 

아래의 소스는 현재 시스템의 endian 확인과 각 데이터 타입의 size와 범위를 확인하는 기본 소스이다.

import java.nio.ByteBuffer;
import java.nio.ByteOrder;

public class TypeSize {
	
	public static void main(String[] args) {
		System.out.println("# int range : " + Integer.MIN_VALUE + " ~ " + Integer.MAX_VALUE + ", byte size : " + Integer.BYTES);
		System.out.println("# long range : " + Long.MIN_VALUE + " ~ " + Long.MAX_VALUE + ", byte size : " + Long.BYTES);
		System.out.println("# short range : " + Short.MIN_VALUE + " ~ " + Short.MAX_VALUE + ", byte size : " + Short.BYTES);
		System.out.println("# char range : " + Character.MIN_VALUE + " ~ " + Character.MAX_VALUE + ", byte size : " + Character.BYTES);
		System.out.println("# byte range : " + Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE + ", byte size : " + Byte.BYTES);
		
		System.out.println("# ENDIAN : " + ByteOrder.nativeOrder());
		
		int value = 123456789;
		byte [] bytes = ByteBuffer.allocate(4).putInt(value).array();
		for (byte b : bytes) {
		    System.out.format("0x%x ", b);
		}
		
		System.out.println();
		
		byte [] bytes2 = ByteBuffer.allocate(4).order(ByteOrder.nativeOrder()).putInt(value).array();
		for (byte b : bytes2) {
		    System.out.format("0x%x ", b);
		}
	}
}

 

결과는 아래와 같다

# int range : -2147483648 ~ 2147483647, byte size : 4
# long range : -9223372036854775808 ~ 9223372036854775807, byte size : 8
# short range : -32768 ~ 32767, byte size : 2
# char range : ~ , byte size : 2
# byte range : -128 ~ 127, byte size : 1

# ENDIAN : LITTLE_ENDIAN
0x7 0x5b 0xcd 0x15 
0x15 0xcd 0x5b 0x7

 

 

반응형

관련글 더보기