如何从NSData的创建字节数组
推荐于2017-11-29
展开全部
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)点;)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询