2016-07-31 19 views
0

Objective-Cでは、整数を文字に変換しようとしています。逆もまた同様です。Objective-Cの文字への整数

たとえば、数値を変換しようとすると、

171,154,140,​​139の文字は、それぞれ取得します。 '«öåã'しかし、私は«šŒ<'(ASCIIによると、«öåãはそれぞれ171,246,229,227)であると予想していました。なぜ誰かがこの事件の原因を知っていますか?

私は、次の使用しています。そのほかに

char c = number; //also tried char *c and unichar c. 

、私はまた別のstackoverflowの質問から、以下の機能を試してみました:

+(NSString *)ConvertWithEncoding:(NSInteger) integer{ 
    char chars[2]; 
    int len = 1; 

    if(integer > 127){ 
     chars[0] = (integer >> 8) & (1 << 8) - 1; 
     chars[1] = integer & (1 << 8) - 1; 
     len = 2; 
    }else{ 
     chars[0] = integer; 
    } 

    //Also tried with NSUTF8Encoding, always resulted in nil. 
    return [[NSString alloc] initWithBytes:chars length:len encoding:NSASCIIEncoding]; 
} 

@Edit

私は、次を使用しています個々の文字をNSStringに追加するコード:

[NSString stringWithFormat:@"%@%c", data, c]; 
+0

あなたは整数を個々の文字に変換しますが、文字列のように見える ''«öåã''のように結果を書きます。 4文字すべてを変換して結果を表示するために使用するコードを表示できますか?それは民衆があなたを助ける助けになるはずです。 – CRD

+0

私は質問に追加しました。単にstringWithFormatで追加しました。しかし、整数154を変換すると、 'ö'はchar c – Sliver2009

答えて

0

あなたは、Intelのためのあなたのバイト順序を逆にする必要があります。

-(NSString *)ConvertWithEncoding:(NSInteger) integer { 

    char chars[2]; 
    int len = 1; 
    int newVal = CFSwapInt16HostToBig(integer); 

    if(newVal > 127){ 
     chars[0] = (newVal >> 8) & (1 << 8) - 1; 
     chars[1] = newVal & (1 << 8) - 1; 
     len = 2; 
    }else{ 
     chars[0] = newVal; 
    } 



    //Also tried with NSUTF8Encoding, always resulted in nil. 
    return [[NSString alloc] initWithBytes:chars length:len encoding:NSASCIIStringEncoding]; 
} 
1

171、154、140文字まで139、...しかし、私は「SOE <«」

期待

どうやらあなたはWindows-1252エンコーディングを探しています:

+(NSString *)convertWithEncoding:(NSInteger) integer { 
    uint8_t byte = integer; 
    return [[NSString alloc] initWithBytes:&byte length:1 encoding: NSWindowsCP1252StringEncoding]; 
} 

例:

NSLog(@"%@", [MyClass convertWithEncoding:171]); // « 
NSLog(@"%@", [MyClass convertWithEncoding:154]); // š 
NSLog(@"%@", [MyClass convertWithEncoding:140]); // Π
NSLog(@"%@", [MyClass convertWithEncoding:139]); // ‹ 
関連する問題