2012-05-12 3 views
1

Как я могу преобразовать ulong в uint32? Простой бросок не работает. То, что работает для меня, - это преобразование длинной строки в строку, а затем снова синтаксический анализ строки в int.Objective-C - ulong to uint32

Однако это кажется действительно неправильным. Есть ли лучший способ?

+1

Что вы имеете в виду под "простой бросок не работает" точно? Какое точное сообщение об ошибке компилятора или проблема времени выполнения, с которой вы сталкиваетесь? –

+1

Кастинг ulong со значением 75 приводит к uint32 со значением 2147483647. – oipoistar

+1

Откуда вы получаете тип 'ulong'? Каково его определение? Как выглядит ваш актерский состав? –

ответ

1

Как сказал Пол Р., не уверен, что вы подразумеваете под «простым приведением». Обе из них работают отлично для меня (и, обратите внимание, я тестирую 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

Смежные вопросы