如何从NSData的创建字节数组
2016-03-02 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
1. 最快的方法(但相当危险),以获得数组:
unsigned char *bytesArray = data.bytes;
NSUInteger lengthOfBytesArray = data.length;
试图让字节#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;
}
2. 如果只是想读,有一个真正:
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;
试图让字节#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;
}
2. 如果只是想读,有一个真正:
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)点;)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询