저는 iPhone 앱을 만들고 있습니다. 문자열에서 일련의 숫자를 파싱하고 싶습니다. 그러나 intValue는 정말 이상하게 행동합니다.iPhone int 파싱
내가 값을 문자열 1304287200000.
내가 다음은 An NSInteger에 그있는 intValue, 보라를 놓고 보라가 내 정수는 2147483647
의 값을 할당 어떤 이유로 무엇 준다?
저는 iPhone 앱을 만들고 있습니다. 문자열에서 일련의 숫자를 파싱하고 싶습니다. 그러나 intValue는 정말 이상하게 행동합니다.iPhone int 파싱
내가 값을 문자열 1304287200000.
내가 다음은 An NSInteger에 그있는 intValue, 보라를 놓고 보라가 내 정수는 2147483647
의 값을 할당 어떤 이유로 무엇 준다?
데이터 유형 int
은 약 ± 20 억의 범위와, 32 비트 숫자 값입니다. 1304287200000은 해당 범위를 벗어난 여백 옆에 있습니다.
long long
의 경우 int
을 건너 뛰고 64 비트 유형이며 사용자의 필요를 충족해야합니다. 64 비트 유형의 사람이 읽을 수 있고 명시적인 이름은 int64_t
입니다.
감사합니다. 그 중 하나를 알아 냈어야합니다.). 즐거운 하루 되시 고 기여한 모든 분들께 감사드립니다! –
귀하의 수를 초과하는 정수 제한
int
은 32 비트이므로 저장할 수있는 최대 값은 2,147,483,647입니다. 대신 longLongValue
을 시도하십시오.
'-intValue'는'NSInteger'하지만'int'를 반환하지 않습니다. 'NSInteger'와'int'는 같은 비트 크기가 될 수 있습니다. (실제로 iOS에서도 마찬가지입니다) 모든 플랫폼에있을 필요는 없습니다. – gcbrueckmann
매우 흥미 롭습니다. 내 대답을 업데이트했습니다. 감사! –
파싱 된 값이 int
유형을 오버플로하기 때문에 되돌아 오는 것은 INT32_MAX
입니다. 이 내용은 NSString
documentation에 설명되어 있습니다. 대신 longLongValue
을 시도하십시오. LLONG_MAX
은 충분히 커야합니다.
더 큰 정수를 사용 해보십시오.) – Jacob