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 只包含一个二进制无符号整数,

你想得到什么?

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 回答