Проблема с преобразованием массива байтов на iphone

У меня небольшая дилемма с проектом iphone.

Я получаю некоторые данные JSON из веб-сервиса. Я могу десериализовать его в словарь, хорошо. Одно из значений словаря является двоичным (изображение), но моя библиотека JSON десериализует его как NSArray из NSDecimalNumbers!

Как мне преобразовать этот NSArray из NSDecimalNumbers в объект NSData, чтобы я мог успешно создать из него изображение, используя [UIImage imageWithData:myNSData]?


person Community    schedule 09.08.2009    source источник


Ответы (1)


Как насчет этого

unsigned char *buffer = (unsigned char*)malloc([arrayOfNumbers count]);
int i=0;
for (NSDecimalNumber *num in arrayOfNumbers) {
    buffer[i++] = [num intValue];
}
NSData *data = [NSData dataWithBytes:buffer length:[arrayOfNumbers count]];
free(buffer);

... или что-то подобное в зависимости от диапазона значений NSDecimalNumbers.

person epatel    schedule 09.08.2009
comment
Вы можете уменьшить потребление памяти и количество копий буфера, используя [NSMutableData dataWithLength:[arrayOfNumbers count]]; для выделения буфера вместо malloc. - person Nikolai Ruhe; 09.08.2009
comment
Блестяще, сработало как шарм! =] Прошло некоторое время с тех пор, как я делал сырой C, поэтому я думаю, что мой синтаксис был отключен. - person ; 09.08.2009
comment
+1 Большое спасибо. Я боролся с этим в течение нескольких дней. - person simonbs; 17.04.2012