2017-12-25 72 views
0

int를 문자열로 변환하고 인덱스 배열을 char 배열로 사용하여 x 위치의 숫자를 얻을 수 있지만 여러 개의 큰 숫자를 처리 할 때이 변환이 약간의 오버 헤드가된다는 것을 알고 있습니다.문자열을 사용하지 않고 Int에서 개별 숫자를 가져 옵니까?

숫자를 문자열로 변환하지 않고 위치 x에서 숫자를 검색하는 방법이 있습니까?

편집 :

는, 여러분 모두 감사합니다 나는 것입니다 벤치 마크 제안 된 방법과를 문자열로 변환보다 더 나은되어 있는지 확인합니다. 스레드는 24 시간 동안 답변을받지 못한 사람이 있으면 더 좋은 아이디어를 얻을 수 있습니다.

EDIT 2 ULONG 숫자에 대한 간단한 테스트 후

는 I 문자열로 변환하고, 숫자가 승인 답변을 아래에 제공된 방법에 비해 50 % 더 느리게 될 수 추출한다는 결론을 내렸다.

+2

수학적으로 가능하지만 머리 글자 수는 문자열로 변환하는 것보다 적습니다. – sino

+0

이동 된 값을 char로 변환하여 변환 할 수 있습니다. –

+2

@sino : 확실히 문자열로 변환하는 것보다 오버 헤드가 적을 것으로 기대합니다. 결국, 문자열로의 변환은 모든 동일한 연산을 수행하고 문자열 객체를 구성해야합니다. 또한 하나의 숫자 만 필요한 경우 OP는 해당 숫자에 도달하면 중지 할 수 있습니다. –

답변

2

당신이 뭔가를 할 수 있습니다 :

하자 :

int ith_digit(int n, int i) { 
    return (int) (n/pow(10, i)) % 10; 
} 

우리는 우리가 원하는 그 자리는 하나의 장소, 예에서는이되는 지점까지의 수를 줄임으로써 i 번째 자리를 얻을 수 있습니다 12345의 세 번째 자릿수를 원한다고 말하면 123으로 줄이고 (10으로 나눈 값으로 나눕니다) 마지막 숫자를 얻기 위해 나머지 숫자를 10으로 나눈 나머지를 취할 수 있습니다. 이것은 원하는 자릿수입니다 .

+1

이것은 문제의 해결책입니다. 이것이 어떻게 작동하는지 더 자세하게 설명하면 더 많은 표를 얻게 될 것입니다. –

+0

@JimMischel 설명을 추가했습니다. Jim, 저에게 상기시켜 줘서 고마워요! –