2

私はNSNumberをUInt32に渡そうとしています..次に、そのUInt32をNSDataオブジェクトに詰め込もうとしています..しかし、これは物事が少しファンキーになる場所です...

その NSData オブジェクトの内容を文字列に書き込もうとすると、返される (null)。

これは私のコードがどのように見えるかです.CACHE_VALUEをrequestCacheDataに渡す方法と関係があると思います..しかし、その理由は完全にはわかりません.

// Use the correctly returned cache number
    UInt32 CACHE_VALUE = [cacheNumber intValue];
    NSLog(@"%lu", CACHE_VALUE); //gives me the correct integervalue
    NSData * requestCacheData = [[NSData alloc] initWithBytes:&CACHE_VALUE length:sizeof(CACHE_VALUE)];

    NSString *myString = [[NSString alloc] initWithData:requestCacheData encoding:NSUTF8StringEncoding];
    NSLog(@"%@", myString); //outputs (null)

任意の助けをいただければ幸いです。

4

1 に答える 1

0

NSData に正しい文字列コンテンツが含まれていない場合、NSData を正しい NSString に変換することはできません。

あなたの場合、NSDataにはバイナリの符号なしintが含まれているだけです。

あなたは何を得ると思いますか?

NSString* str= @"a NSString";
NSData* requestCacheData =[str dataUsingEncoding:NSUTF8StringEncoding];
NSString *myString = [[NSString alloc] initWithData:requestCacheData encoding:NSUTF8StringEncoding];
NSLog(@"%@", myString); 

あなたは正しい出力を得るかもしれません、

ただし、UINTをNSStringに変換したい場合

ただ

NSString *str = [[[NSString alloc] initWithFormat:@"%u",CACHE_VALUE] autorelease];
于 2012-05-09T04:21:48.510 に答える