0

我有这样的 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”后面的数字?

4

2 回答 2

4

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

于 2013-03-02T03:25:40.010 回答
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); 
于 2013-03-02T03:35:14.733 回答