728x90
반응형
일반적으로는 byte 배열의 각 요소를 순서대로 결합하여 하나의 int 값을 만듭니다. 예를 들어, 4바이트 배열을 하나의 int로 변환할 수 있습니다.
public class ByteArrayToInt {
public static void main(String[] args) {
byte[] byteArray = {0x00, 0x00, 0x1A, 0x2B}; // 예시 byte 배열
int intValue = byteArrayToInt(byteArray);
System.out.println("변환된 int 값: " + intValue);
}
public static int byteArrayToInt(byte[] byteArray) {
if (byteArray.length != 4) {
throw new IllegalArgumentException("byte 배열의 길이는 4여야 합니다.");
}
return (byteArray[0] << 24) | (byteArray[1] << 16) | (byteArray[2] << 8) | (byteArray[3] & 0xFF);
}
}
위 코드에서 byteArrayToInt 메소드는 4바이트 배열을 int 값으로 변환합니다. 각 바이트를 왼쪽으로 시프트하여 올바른 위치에 배치한 후, 비트 OR 연산을 사용하여 결합합니다.
이 방법은 byte 배열의 첫 번째 바이트가 가장 높은 비트를 나타내고, 마지막 바이트가 가장 낮은 비트를 나타내는 빅 엔디안(big-endian) 방식으로 배열이 정렬되어 있다고 가정합니다. 만약 리틀 엔디안(little-endian) 방식으로 배열이 정렬되어 있다면, 바이트의 순서를 반대로 변경해야 합니다.
리틀 엔디안 방식으로 변환하려면 다음과 같이 할 수 있습니다:
public class ByteArrayToInt {
public static void main(String[] args) {
byte[] byteArray = {0x2B, 0x1A, 0x00, 0x00}; // 예시 byte 배열 (리틀 엔디안)
int intValue = byteArrayToIntLittleEndian(byteArray);
System.out.println("변환된 int 값: " + intValue);
}
public static int byteArrayToIntLittleEndian(byte[] byteArray) {
if (byteArray.length != 4) {
throw new IllegalArgumentException("byte 배열의 길이는 4여야 합니다.");
}
return (byteArray[3] << 24) | (byteArray[2] << 16) | (byteArray[1] << 8) | (byteArray[0] & 0xFF);
}
}
위 코드에서는 byteArrayToIntLittleEndian 메소드가 리틀 엔디안 방식으로 배열을 변환합니다. 바이트 순서를 반대로 처리하여 올바른 int 값을 얻습니다.
728x90
반응형
'개발 > java' 카테고리의 다른 글
Java XSSFWorkbook 클래스 생성 오류 해결 방법 | Apache POI 라이브러리 버전 불일치 (0) | 2024.08.21 |
---|---|
[java] byte 값과 16진수(hex)값 비교 방법 (0) | 2024.05.29 |
[windows + intellij] OpenJDK21 설치 방법 (0) | 2024.05.28 |
[Enum] 여러 필드로 구성된 Enum에서 특정 값이 존재하는지 체크 하는 방법 (0) | 2024.02.21 |
[Java] byte 에서 특정자리 bit 추출하는 방법 (0) | 2024.02.02 |