0

我有一个 NSdata 对象,其中填充了一堆以十六进制格式格式化的信息。我正在尝试将其转换为正确的字符串表示形式,但正在努力取得任何成功。

我尝试过的一件事是简单地将其放入 NSString 中,然后使用特殊字符标识符对其进行 NSLog 操作 .. 忘记了单词 (%02x),但是要做到这一点,我将其编码为 NSUTF16 .. 我不想做.. 我很想看看我得到的数据到底是什么样的一个 NSString。

我这样做的原因是因为稍后在我的代码中我的编码出现了一些问题,我不确定是因为我收到的数据不正确,还是我在处理它的某个时候把它填满了。

任何帮助,将不胜感激。

4

3 回答 3

1

您可以像这样获得 NSData 的字符串表示形式:

NSData *data = (your data)
NSString *string = [NSString stringWithCString:[data bytes] encoding:NSUTF8StringEncoding];

这是否回答你的问题?

于 2012-10-25T21:26:21.900 回答
0

试试这个——

-(NSString*)hexToString:(NSData*)data{
    NSString *hexString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    if (([hexString length] % 2) != 0)
        return nil;

    NSMutableString *string = [NSMutableString string];

    for (NSInteger i = 0; i < [hexString length]; i += 2) {

        NSString *hex = [hexString substringWithRange:NSMakeRange(i, 2)];
        NSInteger decimalValue = 0;
        sscanf([hex UTF8String], "%x", &decimalValue);
        [string appendFormat:@"%d", decimalValue];
    }

    return string;
}
于 2012-10-25T21:22:59.963 回答
0

也许我还没有理解,但是像这样:

NSData *yourData;
NSLog(@"%@", [yourData description]);

不符合您的需要?

于 2012-10-25T21:19:55.520 回答