将UInt32传递给NSData对象返回(null)

时间:2012-05-09 04:18:14

标签: iphone ios nsdata nsnumber uint32

我正在尝试将NSNumber传递给一个正在运行的UInt32 ..然后我试图将UInt32填充到一个NSData对象中..但是这就是事情变得时髦的...

当我尝试将NSData对象中的whats写入字符串时返回(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)

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您无法将NSData转换为NSData不包含正确字符串内容的正确NSString。

在您的情况下,您的NSData只包含二进制unsigned 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];