2012-05-12 9 views
1

ulongをuint32に変換するにはどうすればよいですか?単純なキャストは機能しません。私にとっては、longを文字列に変換してから、再び文字列をintに解析することです。Objective-C - ulong to uint32

しかし、これは本当に間違っているようです。もっと良い方法はありますか?

+1

あなたはまさに "シンプルなキャストが動作していない" とはどういう意味ですか?正確なコンパイラのエラーメッセージまたは実行時に発生する問題は何ですか? –

+1

ulongを値75でキャストすると、uint32の値は2147483647になります。 – oipoistar

+1

ここからは、 'ulong'型はどこから取得していますか?その定義は何ですか?あなたのキャストはどのように見えますか? –

答えて

1

Paul Rが言ったように、「シンプルキャスト」の意味がわからない。 以下の両方がうまく動作しています(また、ULONGLONGでテストしています)。

  1. 直接キャスト:のNSNumberを使用して

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

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