내보내기(0) 인쇄
모두 확장
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오.
번역
원본

Convert.ToUInt32 메서드 (String, Int32)

지정된 기수로 나타낸 숫자의 문자열 표현을 해당하는 32비트 부호 없는 정수로 변환합니다.

이 API는 CLS 규격이 아닙니다. 

네임스페이스:  System
어셈블리:  mscorlib(mscorlib.dll)

[CLSCompliantAttribute(false)]
public static uint ToUInt32(
	string value,
	int fromBase
)

매개 변수

value
형식: System.String
변환할 숫자가 포함된 문자열입니다.
fromBase
형식: System.Int32
value에 지정된 숫자의 기수로서 2, 8, 10 또는 16이어야 합니다.

반환 값

형식: System.UInt32
value의 숫자에 해당하는 32비트 부호 없는 정수이거나, valuenull이면 0입니다.

예외상황
ArgumentException

fromBase가 2, 8, 10 또는16이 아닌 경우

또는

기수가 10이 아닌 부호 없는 숫자를 나타내는 value의 접두사가 음수 기호인 경우

FormatException

fromBase에서 지정한 진수법에 해당하지 않는 문자가 value에 들어 있는 경우. value의 첫 번째 문자가 잘못된 경우 변환할 숫자가 없다는 예외 메시지가 표시되고, 그렇지 않은 경우 value에 잘못된 후행 문자가 들어 있다는 메시지가 표시됩니다.

OverflowException

기수가 10이 아닌 부호 없는 숫자를 나타내는 value의 접두사가 음수 기호인 경우

또는

valueUInt32.MinValue보다 작거나 UInt32.MaxValue보다 큰 숫자를 나타내는 경우

fromBase가 16이면 value 매개 변수에 의해 지정된 숫자의 접두사로 "0x" 또는 "0X"를 사용할 수 있습니다.

UInt32 데이터 형식은 부호 없는 값만 지원하므로 ToUInt32(String, Int32) 메서드는 value가 부호 없는 이진 표현이라고 가정합니다. 즉, 32개 비트가 모두 숫자 값을 나타내는 데 사용되며 부호 비트가 없습니다. 따라서 코드를 잘못 작성하여 UInt32 데이터 형식의 범위에서 벗어나는 부호 있는 정수 값을 UInt32 값으로 변환해도 메서드에서 예외가 throw되지 않습니다. 다음 예제에서는 MinValue를 해당 16진수 문자열 표현으로 변환한 다음 ToUInt32(String, Int32) 메서드를 호출합니다. 메서드는 예외를 throw하지 않는 대신 "0x80000000 converts to 2147483648"이라는 메시지를 표시합니다.


// Create a hexadecimal value out of range of the UInt32 type.
string value = Convert.ToString(Int32.MinValue, 16);
// Convert it back to a number.
try
{
   UInt32 number = Convert.ToUInt32(value, 16);
   Console.WriteLine("0x{0} converts to {1}.", value, number);
}   
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to an unsigned integer.", 
                     value);
}   


이진 연산 또는 숫자 변환을 수행할 때 개발자는 메서드 또는 연산자에서 적절한 숫자 표현을 사용하여 특정 값을 해석하는지 항상 확인해야 합니다. 다음 예제에서는 16진수 문자열 표현을 UInt32 값으로 변환할 때 이진 표현을 잘못 사용하여 2의 보수 표현이 사용된 값을 해석하지 않도록 하는 방법 중 하나를 보여 줍니다. 예제에서는 어떠한 값을 그 문자열 표시로 변환하면서 그 값이 부호 있는 정수인지 또는 부호 없는 정수인지를 결정합니다. 예제에서 값을 UInt32 값으로 변환할 때는 원래 값이 부호 있는 정수였는지 여부를 확인합니다. 그러한 경우 상위 비트가 설정되면(원래 값이 음수인 경우) 메서드에서 예외를 throw합니다.


// Create a negative hexadecimal value out of range of the UInt32 type.
int sourceNumber = Int32.MinValue;
bool isSigned = Math.Sign((int)sourceNumber.GetType().GetField("MinValue").GetValue(null)) == -1;
string value = Convert.ToString(sourceNumber, 16);
UInt32 targetNumber;
try
{
   targetNumber = Convert.ToUInt32(value, 16);
   if (isSigned && ((targetNumber & 0x80000000) != 0))
      throw new OverflowException();
   else 
      Console.WriteLine("0x{0} converts to {1}.", value, targetNumber);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to an unsigned integer.", 
                     value);
} 
// Displays the following to the console:
//    Unable to convert '0x80000000' to an unsigned integer.     


다음 예제에서는 숫자열 배열에 있는 각 요소들을 16진법 값으로 해석하고 이를 부호 없는 정수로 변환합니다.


public class Example
{
   public static void Main()
   {
      string[] hexStrings = { "80000000", "0FFFFFFF", "F0000000", "00A3000", "D", 
                              "-13", "9AC61", "GAD", "FFFFFFFFFF" };

      foreach (string hexString in hexStrings)
      {
         Console.Write("{0,-12}  -->  ", hexString);
         try {
            uint number = Convert.ToUInt32(hexString, 16);
            Console.WriteLine("{0,18:N0}", number);
         }
         catch (FormatException) {
            Console.WriteLine("{0,18}", "Bad Format");
         }   
         catch (OverflowException)
         {
            Console.WriteLine("{0,18}", "Numeric Overflow");
         }   
         catch (ArgumentException) {
            Console.WriteLine("{0,18}", "Invalid in Base 16");
         }
      }                                            
   }
}
// The example displays the following output:
//       80000000      -->       2,147,483,648
//       0FFFFFFF      -->         268,435,455
//       F0000000      -->       4,026,531,840
//       00A3000       -->             667,648
//       D             -->                  13
//       -13           -->  Invalid in Base 16
//       9AC61         -->             633,953
//       GAD           -->          Bad Format
//       FFFFFFFFFF    -->    Numeric Overflow


.NET Framework

4, 3.5, 3.0, 2.0, 1.1, 1.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

에서 지원

Windows 7, Windows Vista SP1 이상, Windows XP SP3, Windows XP SP2 x64 버전, Windows Server 2008(Server Core는 지원되지 않음), Windows Server 2008 R2(Server Core는 SP1 이상에서 지원됨), Windows Server 2003 SP2

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft