【问题标题】:iOS how to print the equivalent of "view memory of * " in xCode?iOS如何在xCode中打印相当于“查看内存*”的内容?
【发布时间】: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


【解决方案1】:

查看内存转储,您可以选择字母,它将突出显示相应的内存字节。每个字母有 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 {

            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    相关资源
    最近更新 更多