如何从NSData创build字节数组

请任何人指导我如何从nsdata创build字节数组这里是我创buildnsdata的代码

NSData* data = UIImagePNGRepresentation(img); 

如果你只想阅读它们,那么有一个非常简单的方法:

 unsigned char *bytes = [data bytes]; 

如果你想编辑数据, NSData上有一个方法可以做到这一点 。

 // Make your array to hold the bytes NSUInteger length = [data length]; unsigned char *bytes = malloc( length * sizeof(unsigned char) ); // Get the data [data getBytes:bytes length:length]; 

注意不要忘记 – 如果你正在复制数据,你还必须在某个时候调用free(bytes) ;)

这里是获得数组最快的方式(但相当危险):

 unsigned char *bytesArray = data.bytes; NSUInteger lengthOfBytesArray = data.length; 

在尝试获得byte#100之前,你应该检查lengthOfBytesArray,如:

 if (lengthOfBytesArray > 100 + 1) { unsigned char byteWithOffset100 = bytesArray[100]; } 

而另一种安全和更像objc的方式:

 - (NSArray*) arrayOfBytesFromData:(NSData*) data { if (data.length > 0) { NSMutableArray *array = [NSMutableArray arrayWithCapacity:data.length]; NSUInteger i = 0; for (i = 0; i < data.length; i++) { unsigned char byteFromArray = data.bytes[i]; [array addObject:[NSValue valueWithBytes:&byteFromArray objCType:@encode(unsigned char)]]; } return [NSArray arrayWithArray:array]; } return nil; }