2013-06-09 2 views
0

자바에서는 iOS에서 NSData로 표현한 바이트 배열 표현을 사용합니다.자바 바이트 배열을 iOS NSData로 변환

모든 것이 잘 작동합니다. Java와 비교할 때 일부 액세스 방법이 iOS에서 다소 서투른 것처럼 보입니다. 자바에서 단일 바이트 액세스

:

byteArray[i] BYTEARRAY이있는 NSData 어디 아이폰 OS에서 나는이를 계속 사용하면서 :

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

자바이 비슷한 작성이 더 직접적인 방법이 아니다 ?

답변

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]; 
관련 문제