3

ここに私のコードがあることを確認してください

int asciiCode = @"29 78 D8 BB 35 12 63 D5 C3 4B 18 D5 52 6B C2 83";
NSString *strings = [NSString stringWithFormat:@"%c", asciiCode];
NSLog(@"%c",strings);
}

29 78 D8 BB 35 12 63 D5 C3 4B 18 D5 52 6B C2 83の値がindiaとして表示されるはずですが、私の文字列値は)xÿª5c'√K'Rk¬Éとして表示されます。

4

3 に答える 3

5
int asciiCode = @"29 78 D8 BB 35 12 63 D5 C3 4B 18 D5 52 6B C2 83";

これは無効です。@"..."int ではなく NSString です。

次のような char 配列を使用できます。

char *asciiCode = {0x29, 0x78, 0xD8, 0xBB, ...}

を使用して NSString に変換できるもの

NSString *strings = [NSString stringWithCString:asciiCode usingEncoding:NSUTF8StringEncoding];
于 2012-06-01T12:14:06.943 に答える
2

表示された文字は 8 番目のビットが設定されているため ASCII ではありませんが、UTF-8 でエンコードされている可能性がありますか? その場合は、NUL で終了する C 文字列のように扱う必要があります。

unsigned char cstr[] = { 0x29, 0x78, 0xD8, 0xBB, 0x35, 0x12, 0x63, 0xD5, 0xC3,
                         0x4B, 0x18, 0xD5, 0x52, 0x6B, 0xC2, 0x83, 0x0 };
NSString *string = [[NSString alloc] initWithUTF8String:cstr];
NSLog(@"%@",string);

また:

NSString *string = [NSString stringWithUTF8String:cstr];
NSLog(@"%@",string);

保持オブジェクトまたは自動解放オブジェクトのどちらが必要かによって異なりNSStringます。

于 2012-06-01T12:14:45.837 に答える
0

文字コードの先頭に\x. 例えば:

NSString *string = @"\x29 \x78 \xD8 \xBB \x35 \x12 \x63 \xD5 \xC3 \x4B \x18 \xD5 \x52 \x6B \xC2 \x83";
NSLog(@"%@",string);

ただし、コードは 16 進数でなければならないことに注意してください。たとえば、ここでの 29 は 16 進数ではなく 29 (0x29) です。

于 2012-06-01T12:31:12.920 に答える