Objective c NSData中的NSString为空?

Objective c NSData中的NSString为空?,objective-c,Objective C,我从服务器上获取数据,NSData很好,给出了一个字节数。 NSString为空:(第二个日志) NSData*stringOfData=[data subdataWithRange:NSMakeRange(0,[data length]); NSString*finalData=[[NSString alloc]initWithData:stringOfData编码:NSUTF8StringEncoding]自动释放]; NSLog(@“从服务器接收:%@”,stringOfData)//可以

我从服务器上获取数据,NSData很好,给出了一个字节数。 NSString为空:(第二个日志)

NSData*stringOfData=[data subdataWithRange:NSMakeRange(0,[data length]);
NSString*finalData=[[NSString alloc]initWithData:stringOfData编码:NSUTF8StringEncoding]自动释放];
NSLog(@“从服务器接收:%@”,stringOfData)//可以
NSLog(@“接收:%@”,最终数据)//是空的
从服务器接收到:
收到:
这里怎么了? 我什么都试过了,但不知怎么的,总是空的

编辑:数据是我从服务器获取的字节。 它应该是一个整数,但我想把它显示为字符串。。
我尝试了其他类型的编码,但仍然为空。

如果数据包含整数,那么将原始数据加载到NSString中将无法完成您想要的操作。也许你想要更像这样的东西:

int *i = (int *)data.bytes;
NSLog(@"RECIEVED :%d, %d, %d, %d", i[0], i[1], i[2], i[3]);
您可能还发现自己必须处理字节顺序问题。如果是这样,这可能有助于:

NSLog(@"RECIEVED :%d, %d, %d", ntohl(i[0]), ntohl(i[1]), ntohl(i[2]), ntohl(i[3]));

subdataWithRange
调用的作用是什么?它返回的数据量似乎与原始对象相同?另外,
0B00000002000000003000000453242
以任何方式如何成为“字符串”?“stringOfData”它包含什么?我是说什么类型的数据?你有没有尝试过其他编码,比如NSASCIIStringEncoding?谢谢。请参阅我的编辑。也许它是一个整数这一事实是错误的。我必须再次检查我自己。我不认为
nil
中的
finalData
。如果是,您的
NSLog
调用将输出“received:(null)”。最有可能是空字符串。请注意,您应该使用固定大小的整数类型(如
uint32_t
)而不是
int
,因为您应该知道数据中每个整数由多少位组成(而
int
的定义可能因您所在的平台而异)。
NSLog(@"RECIEVED :%d, %d, %d", ntohl(i[0]), ntohl(i[1]), ntohl(i[2]), ntohl(i[3]));