2012-05-12 3 views
1

ulong을 uint32로 변환하려면 어떻게해야합니까? 간단한 캐스트가 작동하지 않습니다. 나에게 맞는 것은 long을 문자열로 변환 한 다음 문자열을 다시 int로 구문 분석하는 것입니다.Objective-C - ulong to uint32

그러나 이것은 실제로 잘못된 것처럼 보입니다. 더 좋은 방법이 있습니까?

+1

당신이 무엇을 의미합니까 정확히 "간단한 캐스트가 작동하지 않습니다"? 발생하는 정확한 컴파일러 오류 메시지 또는 런타임 문제는 무엇입니까? –

+1

값이 75 인 ulong을 캐스팅하면 값 2147483647 인 uint32가 생성됩니다. – oipoistar

+1

여기서 'ulong' 유형은 어디에서 얻습니까? 그것의 정의는 무엇입니까? 캐스트가 어떻게 생겼습니까? –

답변

1

Paul R이 말했듯이 "단순한 캐스트"가 무슨 뜻인지 확실하지 않습니다. 다음 두 가지가 모두 잘 작동합니다 (참고로 ULONGLONG으로 테스트 중입니다).

  1. 직접 캐스트 :

    unsigned long long val1 = (unsigned long long)75;
    UInt32 val2 = (UInt32)val1;
    NSLog(@"%qu, %lu", num1, num2);
    // OUTPUTS: 75, 75

  2. 가의 NSNumber 사용 :

    NSNumber* val1 = [NSNumber numberwithUnsignedLongLong:75];
    NSNumber* val2 = [NSNumber numberwithUnsignedInteger:[val1 usignedIntegerValue]];
    NSLog(@"%qu, %u", [num1 unsignedLongLongValue], [num2 unsignedIntegerValue]];
    // OUTPUTS: 75, 75