[C#] C #에서 char을 int로 변환

C #에 문자가 있습니다.

char foo = '2';

이제 2를 int로 가져오고 싶습니다. Convert.ToInt32가 숫자 2가 아닌 char의 실제 십진수 값을 반환한다는 것을 알았습니다. 다음은 작동합니다.

int bar = Convert.ToInt32(new string(foo, 1));

int.parse는 문자열에서도 작동합니다.

C #에 문자열을 만들지 않고 char에서 int로 이동하는 기본 함수가 없습니까? 나는 이것이 사소한 일이라는 것을 알고 있지만 직접 변환 할 기본 사항이 없다는 것이 이상하게 보입니다.



답변

흥미로운 답변이지만 문서는 다르게 말합니다.

GetNumericValue방법을 사용하여 Char숫자를 나타내는 객체를 숫자 값 유형 으로 변환 하십시오 . ParseTryParse을 사용
하여 문자열의 문자를 Char
객체 로 변환 합니다.
객체를 객체 ToString로 변환하는 데 사용 합니다.CharString

http://msdn.microsoft.com/en-us/library/system.char.aspx


답변

이렇게하면 int로 변환됩니다.

char foo = '2';
int bar = foo - '0';

이것은 각 문자가 내부적으로 숫자로 표시되기 때문에 작동합니다. 문자 ‘0’에서 ‘9’는 연속적인 숫자로 표시되므로 문자 ‘0’과 ‘2’의 차이를 찾으면 숫자 2가됩니다.


답변

누구나 사용으로 간주했습니다 int.Parse()int.TryParse()같이

int bar = int.Parse(foo.ToString());

이처럼 더 나은

int bar;
if (!int.TryParse(foo.ToString(), out bar))
{
    //Do something to correct the problem
}

훨씬 안전하고 오류가 적습니다.


답변

char c = '1';
int i = (int)(c-'0');

정적 메소드를 만들 수 있습니다.

static int ToInt(this char c)
{
    return (int)(c - '0');
}


답변

이 시도

char x = '9'; // '9' = ASCII 57

int b = x - '0'; //That is '9' - '0' = 57 - 48 = 9


답변

기본적으로 UNICODE를 사용하므로 잘못된 방법을 사용하는 것이 좋습니다.

int bar = int.Parse(foo.ToString());

아래 숫자는 숫자 및 기본 라틴 문자에 대해 동일하지만


답변

이것은 정수로 변환하고 유니 코드를 처리합니다.

CharUnicodeInfo.GetDecimalDigitValue('2')

자세한 내용은 여기를 참조 하십시오 .