0

16 進数の行を char 値の行に変換しようとしています。これは私が使用するコードです:

// Store HEX values in a mutable string:
    NSUInteger capacity = [data length] * 2;
    NSMutableString *stringBuffer = [NSMutableString stringWithCapacity:capacity];
    const unsigned char *dataBuffer = [data bytes];
    NSInteger i;
    for (i=0; i<[data length]; ++i) {
        [stringBuffer appendFormat:@"%02X ", (NSUInteger)dataBuffer[i]];
    }
// Log it:
  NSLog(@"stringBuffer is %@",stringBuffer);


// Convert string from HEX to char values:
NSMutableString * newString = [[NSMutableString alloc] init];
NSScanner *scanner = [[NSScanner alloc] initWithString:content];
unsigned value;
while([scanner scanHexInt:&value]) {
    [newString appendFormat:@"%c ",(char)(value & 0xFF)];
}
NSLog(@"newString is %@", newString);

これまでのところ、これはうまく機能します。出力は期待どおりにそれを受け取りました:

String Buffer is 3D 3E 2C 01 2C 31 33 30 37 31 38 30 39 32 34 2D 30 37 2C FF 00 00 00 00 00
 newString is = > ,  , 1 3 0 7 1 8 0 9 2 4 - 0 7 , ˇ

1 つだけ問題があります。NULL 値が文字列を終了しています (私はそう思います)。新しい文字列は「0 0 0 0」と入力する必要がありますが、そうではなく、そこで終了します。行の 3 つのゼロ = char の NULL であるため、そこで終了していると思います。この文字列が終了するのを防ぎ、値全体を表示する方法を知っている人はいますか?

4

1 に答える 1