我试图打印出发行人" iOS中的钥匙串项目提供的数据。我似乎无法找到正确的编码或了解这些数据的存储方式。
当我选择w"查看*"在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
答案 0 :(得分:0)
查看内存转储,您可以选择字母,它将突出显示相应的内存字节。每个字母有2个字节,这让我意识到它使用的是Ascii编码,下面的代码可以工作:
@try {
if([data isKindOfClass:[NSData class]]==NO)
{
continue;
}
NSString* stringAscii = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSCharacterSet* alphaNumeric = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.@"];
NSCharacterSet *doNotWant = [alphaNumeric invertedSet];
NSString* cleanedUpString = [[stringAscii componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @" "];
if(cleanedUpString.length>0)
{
DLog(@" %@ Cleaned up: %@",key,cleanedUpString);
}
}
@catch (NSException *exception) {
}
@finally {
}