0

16進数でフォーマットされた一連の情報が入力されたNSdataオブジェクトがあります。これを適切な文字列表現に変換しようとしていますが、成功するのに苦労しています。

私が試したことの1つは、単純にNSStringに入れてから、特殊文字識別子を使用してNSLogすることです。単語(%02x)を忘れましたが、これを行うために、NSUTF16にエンコードしています。 do..取得しているデータが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

Maybe I haven't understood, but something like this:

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

doesn't fit your need?

于 2012-10-25T21:19:55.520 に答える
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 に答える