字节数组到NSData

Sub*_*jee 16 iphone bytearray objective-c nsdata ios

在WebService中,JSON响应即将到来.在响应中,有一个图像作为字节数组出现.我必须在UIImageView中显示图像.我试图将字节数组转换为NSData.但没有得到如何做到这一点.任何帮助,将不胜感激.我确信字节数组中包含图像数据.样本字节数组供您参考:

        (137,
        80,
        78,
        71,
        ...
        66,
        96,
        130)
Run Code Online (Sandbox Code Playgroud)

谢谢

Par*_*iya 35

以下是将数据导入NSData对象的示例.

const unsigned char bytes[] = {values here};
NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)];
NSLog(@"%@", data);
Run Code Online (Sandbox Code Playgroud)


小智 21

您必须首先将JSON转换为字符串数组; 例如,你可以使用这个NSJSONSerialization:

NSArray *strings = [NSJSONSerialization JSONObjectWithData:theJSONString options:kNilOptions error:NULL];
Run Code Online (Sandbox Code Playgroud)

然后遍历字符串数组,将每个条目转换为整数,并将其添加到分配的字节指针/数组:

unsigned c = strings.count;
uint8_t *bytes = malloc(sizeof(*bytes) * c);

unsigned i;
for (i = 0; i < c; i++)
{
    NSString *str = [strings objectAtIndex:i];
    int byte = [str intValue];
    bytes[i] = byte;
}
Run Code Online (Sandbox Code Playgroud)

然后最后从字节中创建一个NSData,然后使用它初始化一个UIImage对象:

NSData *imageData = [NSData dataWithBytesNoCopy:bytes length:c freeWhenDone:YES];
UIImage *image = [UIImage imageWithData:imageData];
Run Code Online (Sandbox Code Playgroud)