将Java字节数组转换为iOS NSData

时间:2013-06-09 15:48:30

标签: java ios bytearray nsdata

在Java中,我有一个字节数组表示,在iOS中我表示为NSData。

一切正常 - 只是有些访问方法在iOS中看起来比Java更笨拙。

在Java中访问单个字节:byteArray[i]

在iOS中我一直使用这个,其中byteArray是一个NSData:

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

是不是有更直接的方法来编写类似于Java的文章?

1 个答案:

答案 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];