0

Java では、iOS では NSData として表したバイト配列表現があります。

すべてが正常に動作します - Java と比較して、iOS では一部のアクセス方法がかなりぎこちないように見えるだけです。

Java で 1 バイトにアクセスする:byteArray[i]

iOS では、byteArray が NSData である場合にこれを使用し続けます。

 Byte b;
 [byteArray getBytes: &b range: NSMakeRange( i, 1 )];

Java に似た、より直接的な書き方はありませんか?

4

1 に答える 1

3

NSData オブジェクトを使用しないことを考慮すると、このように const void* に変換できます。

NSdata *data = your data stuff
NSUInteger i = 1;
const char * array = [data bytes];
char c = array[i];

注意 この種の配列は読み取り専用です。(const void *)

それ以外の場合は、既に述べた機能またはApple が提供するその他の機能を使用する必要があります。

編集

または、何らかのカテゴリを NSData に追加することもできます

@interface NSData(NSDataAdditions)

- (char)byteAtIndex:(NSUInteger)index;

@end

@implementation NSData(NSDataAdditions)

- (char)byteAtIndex:(NSUInteger)index {
    char c;
    [self getBytes: &c range: NSMakeRange( index, 1 )];
    return c;
}

@end

そして、次のように配列にアクセスします。

NSdata *data = your data stuff
char c = [data byteAtIndex:i];
于 2013-06-09T16:08:14.527 に答える