【发布时间】:2014-10-08 14:53:43
【问题描述】:
我正在尝试从 iOS 中的钥匙串项中打印出可用的“发行人”数据。我似乎无法找到正确的编码或了解这些数据的存储方式。
当我在 xCode 中选择“查看内存*”选项时,我看到我在垃圾中看到了一些文本。 我正在尝试了解如何打印内存指针正在寻址的文本和垃圾。下面是我正在尝试执行的操作的屏幕截图
我尝试了这些,但我得到了 nil 字符串或 UTF16 的日语字符
id data = [innerObject objectForKey:@"issr"];
NSString* string8 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSString* string16 = [[NSString alloc] initWithData:data encoding:NSUTF16StringEncoding];
NSString* string16be = [[NSString alloc] initWithData:data encoding:NSUTF16BigEndianStringEncoding];
NSString* string16le = [[NSString alloc] initWithData:data encoding:NSUTF16LittleEndianStringEncoding];
NSString* string32 = [[NSString alloc] initWithData:data encoding:NSUTF32StringEncoding];
NSString* string8Bytes = [[NSString alloc]initWithBytes:&data length:[data length] encoding:NSUTF8StringEncoding];
//NSLog the result
【问题讨论】:
-
您可以尝试 NSASCIIStringEncoding - 但我不确定这是否能满足您的实际需求。您可能希望通过数据字节编写自己的自定义循环,手动解释字符。
-
没有字符串编码会做你想要的,因为有空字节。你需要使用
NSScanner这样的东西,这样你就可以为空字节输出一些“空白”值,而不是字符串“终止”。 -
Ascii 编码工作
标签: ios objective-c xcode nsstring nsdata