在Java中,我有一个字节数组表示,在iOS中我表示为NSData。
一切正常 - 只是有些访问方法在iOS中看起来比Java更笨拙。
在Java中访问单个字节:byteArray[i]
在iOS中我一直使用这个,其中byteArray是一个NSData:
Byte b;
[byteArray getBytes: &b range: NSMakeRange( i, 1 )];
是不是有更直接的方法来编写类似于Java的文章?
答案 0 :(得分:3)
考虑到不使用NSData对象,您可以将其转换为const void *,就像这样。
NSdata *data = your data stuff
NSUInteger i = 1;
const char * array = [data bytes];
char c = array[i];
注意强> 这种数组是只读的! (const void *)
否则你必须使用你已经提到的功能或一些others Apple provides。
修改强>
或者您可以向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];