Objective c 如何将此NSData转换为NSString?

Objective c 如何将此NSData转换为NSString?,objective-c,Objective C,我有这样的数据: 455a4f4e 00000001 01020304 00000000 00000000 我的代码: Byte bytes[] = {0x45, 0x5a, 0x4f, 0x4e, 0, 0, 0, 1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0}; NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)]; NSString *str = [[NSString alloc]

我有这样的数据:

455a4f4e 00000001 01020304 00000000 00000000
我的代码:

Byte bytes[] = {0x45, 0x5a, 0x4f, 0x4e, 0, 0, 0, 1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0};
NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)];
NSString *str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"%@", str); // prints "EZON"
我希望结果是
EZON0001
等等


为什么打印结果不包括“EZON”后面的数字?

因为0x4e后面的零不是ASCII/UTF-8数字“0”,而是字符串结束标记。它应该是0x30,而不是0x00…

因为0x4e之后的零不是ASCII/UTF-8数字“0”,而是字符串结束标记。它应该是0x30,而不是0x00…

试试这个

    Byte bytes[] = {0x45, 0x5a, 0x4f, 0x4e, 0, 0, 0, 1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0};
    NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)];
    NSString* newStr = [NSString stringWithUTF8String:[data bytes]];
    NSLog(@"%@", newStr); 
试试这个

    Byte bytes[] = {0x45, 0x5a, 0x4f, 0x4e, 0, 0, 0, 1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0};
    NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)];
    NSString* newStr = [NSString stringWithUTF8String:[data bytes]];
    NSLog(@"%@", newStr); 

问题在于提供的字符
0 1
等字节错误。剩下的代码没问题。@ravindhiran:当你看到一个答案有4张赞成票时,不需要回答,除非你能给出更好的答案。问题是提供了错误的字符字节
0 1
等。代码的其余部分很好。@ravindhiran:当您看到一个答案有4个向上投票时,无需回答,除非您认为可以给出更好的答案。请确保在字节数组的末尾为空终止符保留一个0。@rmaddy:这不是必需的
dataWithBytes:length:
不要求字节以0结尾,
initWithData:encoding:
不要求数据以0结尾。@Martiner我知道NSData不需要以null结尾,但我错误地认为字符串需要以null结尾。但NSString在这方面足够聪明是有道理的。谢谢。请确保在字节数组的末尾为空终止符保留一个0。@rmaddy:这不是必需的
dataWithBytes:length:
不要求字节以0结尾,
initWithData:encoding:
不要求数据以0结尾。@Martiner我知道NSData不需要以null结尾,但我错误地认为字符串需要以null结尾。但NSString在这方面足够聪明是有道理的。谢谢