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