Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

바이트 배열을 IP 주소로 변환하는 방법: 자바·C# 예제 코드 완전 정리


바이트 배열이 주어졌을 때 이를 IP 주소 형태로 변환해 출력하는 방법을 알아보겠습니다. IPAddress 클래스를 활용해 바이트 배열을 점(.)으로 구분된 IPv4 주소 문자열로 바꾸는 과정을 단계별로 살펴본 뒤, 순수 자바 코드로도 동일하게 구현해 보겠습니다.

바이트 배열(Byte Array)이란?

바이트(byte)는 8비트로 구성된 가장 기본적인 데이터 단위입니다. 바이트 배열은 이런 바이트들이 연속해서 나열된 자료 구조로, 주로 이진(binary) 데이터를 저장하는 데 사용됩니다.

자바에서 byte는 기본형(primitive type)으로, 컴퓨터의 1바이트에 해당하는 8비트 크기를 가지며 -128부터 127까지의 값을 저장할 수 있습니다.

바이트 변수 선언
byte 변수명 = 초기값;

바이트 배열 선언
byte[] 배열명 = new byte[배열_크기];

IPAddress 클래스란?

IPAddress 클래스는 IP 주소를 표현하고 다루기 위한 클래스로, System.Net 네임스페이스에 포함되어 있어 사용 전에 반드시 임포트해야 합니다.

참고: 아래 첫 번째 예제는 실제로 C#(.NET) 문법을 따릅니다. 순수 자바 환경에서는 같은 역할을 하는 java.net.InetAddress 클래스를 사용하며, 이에 대한 예제도 함께 소개합니다.

문법(Syntax)

IPAddress 객체명 = new IPAddress(byte[]);

예시 입력과 출력

입력: 171, 32, 101, 11
출력: 171.32.101.11

입력: 172, 31, 102, 14
출력: 172.31.102.14

각 바이트 값을 점(.)으로 구분해 이어 붙이면 우리가 흔히 보는 IPv4 주소 형태가 됩니다.

문제 해결 접근 방식

  • System.Net 네임스페이스(자바라면 java.net 패키지)를 임포트한다
  • IP 주소를 구성하는 숫자들을 바이트 값으로 바이트 배열에 담는다
  • IPAddress 객체를 생성하면서 생성자에 바이트 배열을 전달한다
  • ToString() 메서드로 주소를 읽기 좋은 문자열로 변환한다
  • 결과를 콘솔에 출력한다

알고리즘

START
Step 1 → 변환을 수행할 클래스 convert를 선언한다
Step 2 → Main 메서드에서 다음을 수행한다
         · 바이트 배열 { 171, 32, 101, 11 }을 전달해
           IPAddress 객체 add를 생성한다
         · add.ToString()을 호출해 결과를 출력한다
Step 3 → 프로그램을 종료한다
STOP

C# 예제 코드

using System;
using System.Net;

public class convert {
    public static void Main() {
        IPAddress add = new IPAddress(new byte[] { 171, 32, 101, 11 });
        Console.WriteLine(add.ToString());
    }
}

실행 결과

171.32.101.11

순수 자바(Java)로 구현하기

자바 표준 라이브러리에는 공개된 IPAddress 클래스가 없습니다. 대신 java.net.InetAddressgetByAddress() 정적 메서드를 사용하면 같은 작업을 수행할 수 있습니다. 이때 128 이상의 값은 자바 byte 범위(-128~127)를 벗어나므로 (byte) 캐스팅이 필요합니다.

import java.net.InetAddress;

public class Convert {
    public static void main(String[] args) throws Exception {
        byte[] bytes = { (byte) 171, 32, 101, 11 };
        InetAddress address = InetAddress.getByAddress(bytes);
        System.out.println(address.getHostAddress());
    }
}

실행 결과

171.32.101.11

정리

바이트 배열의 각 요소는 IP 주소의 한 옥텟(octet)에 해당합니다. C#에서는 IPAddress 생성자에 바이트 배열을 넘기면 되고, 자바에서는 InetAddress.getByAddress()를 호출하면 됩니다. 두 언어 모두 내부적으로 8비트 값을 올바르게 처리하므로 128 이상의 값도 정확하게 변환됩니다.