Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 정수를 16진수로, 16진수를 정수로 변환하는 방법

C# 프로그래밍에서는 정수를 16진수 문자열로 변환하거나, 반대로 16진수 문자열을 정수로 되돌려야 하는 경우가 자주 있습니다. 이 글에서는 두 가지 변환 방법을 예제 코드와 함께 자세히 살펴보겠습니다.

정수를 16진수로 변환하기

정수는 ToString() 메서드에 서식 지정자 "X"를 전달하여 간단하게 16진수 문자열로 변환할 수 있습니다.

string hexValue = integerValue.ToString("X");

예제

using System;

namespace DemoApplication{
public class Program{
public static void Main(){
int integerValue = 500;
Console.WriteLine($"Integer Value: {integerValue}");
string hexValue = integerValue.ToString("X");
Console.WriteLine($"Hexadecimal Value: {hexValue}");
Console.ReadLine();
}
}
}

출력 결과

Integer Value: 500
Hexadecimal Value: 1F4

정수 값 500이 16진수 문자열 "1F4"로 성공적으로 변환된 것을 확인할 수 있습니다. 참고로 소문자 16진수가 필요하다면 서식 지정자 "x"를 사용하면 됩니다.

16진수를 정수로 변환하기

16진수 문자열을 정수로 변환하는 대표적인 방법은 두 가지입니다. 바로 int.ParseConvert.ToInt32입니다.

방법 1: int.Parse 사용

int.Parse 메서드는 숫자의 문자열 표현을 해당하는 32비트 부호 있는 정수로 변환합니다. 이때 NumberStyles.HexNumber 옵션을 함께 지정해야 문자열을 16진수로 올바르게 해석합니다.

using System;

namespace DemoApplication{
public class Program{
public static void Main(){
string hexValue = "1F4";
Console.WriteLine($"Hexadecimal Value: {hexValue}");
int integerValue = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
Console.WriteLine($"Integer Value: {integerValue}");
Console.ReadLine();
}
}
}

출력 결과

Hexadecimal Value: 1F4
Integer Value: 500

변환이 실패할 가능성이 있다면 int.Parse 대신 int.TryParse를 사용하는 것이 좋습니다. TryParse는 예외를 던지지 않고 bool 값으로 변환 성공 여부를 반환하기 때문에 더 안전한 처리가 가능합니다.

방법 2: Convert.ToInt32 사용

Convert.ToInt32 메서드는 지정된 값을 32비트 부호 있는 정수로 변환합니다. 두 번째 인수로 진수(base)를 지정할 수 있으므로, 16진수 문자열을 변환할 때는 16을 전달하면 됩니다.

using System;

namespace DemoApplication{
public class Program{
public static void Main(){
string hexValue = "1F4";
Console.WriteLine($"Hexadecimal Value: {hexValue}");
int integerValue = Convert.ToInt32(hexValue, 16);
Console.WriteLine($"Integer Value: {integerValue}");
Console.ReadLine();
}
}
}

출력 결과

Hexadecimal Value: 1F4
Integer Value: 500

마무리

정리하면 다음과 같습니다.

  • 정수 → 16진수: ToString("X")
  • 16진수 → 정수: int.Parse(문자열, NumberStyles.HexNumber) 또는 Convert.ToInt32(문자열, 16)

두 방식 모두 동일한 결과를 제공하지만, 입력값의 신뢰도에 따라 예외 처리가 필요한 경우에는 TryParse 계열의 메서드를 활용하는 것이 좋습니다.