私はこのような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」の後に数字が含まれていないのはなぜですか?
回答:
回答№1は40x4eの後のゼロはASCII / utf-8桁の「0」ではなく、文字列マーカーの末尾であるためです。それは0x00ではなく0x30でなければなりません...
回答№2の場合は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);