내보내기(0) 인쇄
모두 확장

Convert.ToInt64 메서드 (String, Int32)

업데이트: 2007년 11월

지정된 기수로 나타낸 숫자에 대한 문자열 표현을 64비트 부호 있는 정수로 변환합니다.

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

public static long ToInt64(
	string value,
	int fromBase
)
public static long ToInt64(
	String value,
	int fromBase
)
public static function ToInt64(
	value : String, 
	fromBase : int
) : long

매개 변수

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

반환 값

형식: System.Int64
value의 숫자에 해당하는 64비트 부호 있는 정수를 반환합니다.
- 또는 -
valuenull이면 0을 반환합니다.

예외상황
ArgumentException

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

- 또는 -

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

FormatException

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

OverflowException

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

- 또는 -

반환 값이 Int64.MinValue보다 작거나 Int64.MaxValue보다 큰 경우

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

10진수 이외의 숫자 표현에서는 음수 부호가 지원되지 않으므로 ToInt64(String, Int32) 메서드는 음수에 2의 보수 표현이 사용된다고 가정합니다. 즉, 이 메서드는 정수(Long)의 최상위 이진 비트(비트 63)를 항상 부호 비트로 해석합니다. 따라서 코드를 잘못 작성하여 Int64 데이터 형식의 범위에서 벗어나는 10진수가 아닌 숫자를 Int64 값으로 변환해도 메서드에서 예외가 throw되지 않습니다. 다음 예제에서는 MaxValue를 해당 16진수 문자열 표현으로 변환한 다음 ToInt64(String, Int32) 메서드를 호출합니다. 메서드는 예외를 throw하지 않고 "0xFFFFFFFFFFFFFFFF converts to -1"이라는 메시지를 표시합니다.

// Create a hexadecimal value out of range of the long type.
string value = ulong.MaxValue.ToString("X");
// Use Convert.ToInt64 to convert it back to a number.
try
{
   long number = Convert.ToInt64(value, 16);
   Console.WriteLine("0x{0} converts to {1}.", value, number);
}   
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to a long integer.", value);
}   


이진 연산 또는 숫자 변환을 수행할 때 개발자는 메서드에서 적절한 숫자 표현을 사용하여 특정 값을 해석하는지 항상 확인해야 합니다. 다음 예제와 같이 숫자 값을 16진수 문자열 표현으로 변환하기 전에 우선 값이 나타내는 형식에 부호가 있는지 여부를 확인하면 메서드에서 항상 오버플로를 적절히 처리할 수 있습니다. 그런 다음 원래 값이 부호 없는 형식인데 정수로 다시 변환한 결과에 부호 비트가 있는 경우 예외를 throw합니다.

// Create a negative hexadecimal value out of range of the Byte type.
ulong sourceNumber = ulong.MaxValue;
bool isSigned = Math.Sign(Convert.ToDouble(sourceNumber.GetType().GetField("MinValue").GetValue(null))) == -1;
string value = sourceNumber.ToString("X");
long targetNumber;
try
{
   targetNumber = Convert.ToInt64(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 a long integer.", value);
} 
// Displays the following to the console:
//    Unable to convert '0xFFFFFFFFFFFFFFFF' to a long integer.     


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

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

.NET Framework

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

.NET Compact Framework

3.5, 2.0, 1.0에서 지원

XNA Framework

2.0, 1.0에서 지원

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft