a char
를 로 변환하는 올바른 방법은 무엇입니까 int
? 이것은 제공합니다 49
:
int val = Convert.ToInt32('1');
//int val = Int32.Parse("1"); // Works
문자열로 변환 한 다음 구문 분석하고 싶지 않습니다.
답변
아무도 바로 내장 된 정적 메서드를 언급하지 않은 것에 놀랐습니다 System.Char
.
int val = (int)Char.GetNumericValue('8');
// val == 8
답변
어때 ( char c
)
int i = (int)(c - '0');
char 값의 뺄셈은 무엇입니까?
API 질문 (코멘트), 확장 방법일까요?
public static class CharExtensions {
public static int ParseInt32(this char value) {
int i = (int)(value - '0');
if (i < 0 || i > 9) throw new ArgumentOutOfRangeException("value");
return i;
}
}
그런 다음 사용 int x = c.ParseInt32();
답변
모두가 잊고있는 것은 왜 이런 일이 발생하는지 설명하는 것입니다.
Char는 기본적으로 정수이지만 ASCII 테이블에 포인터가 있습니다. 모든 문자에는 구문 분석을 시도 할 때 명확하게 볼 수있는 해당 정수 값이 있습니다.
Pranay는 분명히 다른 문자 집합을 가지고 있으므로 HIS 코드가 작동하지 않습니다. 유일한 방법은
int val = '1' - '0';
이것은 테이블에서 정수 값을 조회하기 때문에 '0'
‘기본 값’에서 char 형식의 숫자를 빼면 원래 숫자가 제공됩니다.
답변
int i = (int)char.GetNumericValue(c);
또 다른 옵션 :
int i = c & 0x0f;
이것도 가능합니다.
답변
int val = '1' - '0';
이것은 ‘0’이 가장 낮은 ASCII 코드를 사용하여 수행 할 수 있으며 거기에서 문자 수를 계산합니다.
답변
int val = '1' - 48;
답변
다음 확장 방법을 사용할 수 있습니다.
public static class CharExtensions
{
public static int CharToInt(this char c)
{
if (c < '0' || c > '9')
throw new ArgumentException("The character should be a number", "c");
return c - '0';
}
}