2012-07-26 1 views
2
static void Main(string[] args) 
{ 
    string str_val = "8584348,894"; 
    //int prefix = Convert.ToInt32(str_val[0]); //prefix = 56 O_o 
    //int prefix = (int)str_val[0]; //what, again 56? i need 8! 
    int prefix = Convert.ToInt32("8"); //at least this works -_- 
} 

첫 번째 기호를 오른쪽 숫자 값으로 변환하는 방법을 알고 싶습니다.문자열의 첫 번째 기호를 int로 변환하려고하면 이상한 값이납니다.

+2

당신이 궁금해 할 때를 대비하여 캐릭터의 아스키 값을 찾는 중입니다. – Bridge

+0

설명해 주셔서 감사합니다. – Kosmos

답변

11

당신이 사용하는 경우 : 문자의 유니 코드/아스키 번호를 제공

Convert.ToInt32(char val); 

매개 변수로 전달되는 :

Convert.ToInt32(str_val[0]); 

다음 실제로 과부하를 요구하고있다.

Convert.ToInt32(str_val.Substring(0, 1)); 

당신이 오버로드를 호출이 방법 :

Convert.ToInt32(string val); 

은 실제로 당신이 원하는 것을 먼저 문자를 변환 할 경우

, 당신은 문자열 형식으로 강제 할 필요가 (문자열 값을이 문자열이 나타내는 int 값으로 변환).

2

Convert.ToInt32(str_val[0]) 이렇게하면 char을 int로 변환하는 문자열의 인덱스에서 문자를 읽게됩니다. 정수는 ASCII입니다.

+0

제발 설명해 주실 수 있습니다. -1 – HatSoft

+0

-1, 그게 다른 사람 : P는 항상 – Kosmos

+0

에 대한 답변이있는 모든 사람에게 +1을 설정했으나 이제는 "int가 당신의 답을 "ascii for it"설명. :] 안부. –

3

문자열을 파싱하지만 문자를 전달하려고합니다. 문자를 먼저 문자열로 변환하십시오.

int prefix = Convert.ToInt32(str_val[0].ToString()); 

그래서 8의 문자 값은 ASCII 값 56이므로 ASCII 값이 아닌 문자열로 값을 inteprete하십시오. .ToString() 메서드를 사용하면 문자를 null 종결 문자열로 변환하고 ToInt32 메서드로 읽을 수 있습니다.

1

Bridge와 마찬가지로 ASCII 값이 표시됩니다. 문자열 클래스의 인덱서를 사용하여 문자 만 가져 오면 char로 반환합니다. char documentation을 읽으면 내부적으로 숫자 UTF-16 값으로 저장된다는 것을 알 수 있습니다. 또한 UTF-16 값을 추출하거나 숫자 양식을 문자 양식으로 변환하는 대부분의 숫자 유형과의 암시 적 변환도 수행합니다. 그게 당신이하는 일입니다.

UTF-16 값의 숫자 표현을 가져 오지 않고 int로 구문 분석하는 것이 무엇을 의미합니다. 그것이 변환 응답이 모두 들어오는 곳입니다.

1
Int32.Parse(str_val[0]) 

문자열로 숫자를 알려줍니다.

관련 문제