如何将此NSData转换为NSString?

时间:2013-03-02 03:23:02

标签: objective-c

我有这样的NSData:

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”后面的数字?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

试试这个

    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);