2016-07-15 63 views
0

我想顯示從Web服務產生的字節數組的圖片。打印出如下所示的描述: (「-119」,80,78,71,13,10,26,10,0,0,0,13,3 ...) 從標題清楚它是用有符號整數編碼的png。它是一個__NSCFArray,它具有__NSCFNumber元素。簽名的字節數組到UIImage

在Objective-C我的代碼(基於多google搜索):

NSData *data = [NSData dataWithBytes:(const void *)myImageArray length [myImageArray count]]; 
UIImage *arrayImage = [UIImage imageWithData:data]; 

我收到一個空的UIImage指針。 我也嘗試將其轉換爲無符號的NSNumbers,然後將其傳遞給NSData,雖然也許我沒有正確地做到這一點。我究竟做錯了什麼?

+0

從文件中讀取相同的圖像並確認NSData內容是否正確。 –

+0

從web服務?那麼數據如何呢?哪一種?它的長度是多少?什麼是imageArray和什麼是myImageArray?陣列的長度是多少?如果它不是太長(並且內容圖像不是「冒犯性或私密性的),您可以在這裏複製它,我們可能會發現您的問題。 – Larme

+0

感謝您的幫助。我能夠解決以下答案。 – jaymo

回答

0

您不能簡單地將NSNumberNSArray轉換爲二進制數據。 NSArrayNSNumber都是對象;它們有自己的標題和內部結構,它們與原始字節字符串不同。你需要它逐字節的東西轉換沿着這些線路:

NSArray *bytes = @[@1, @2, @3]; 
NSMutableData *data = [NSMutableData dataWithLength:bytes.count]; 
for (NSUInteger i = 0; i < bytes.count; i++) { 
    char value = [bytes[i] charValue]; 
    [data replaceBytesInRange:NSMakeRange(i, 1) withBytes:&value]; 
} 

char是有符號int8_t,這似乎是你正在使用的數據類型。它通常用來表示「一個ASCII字符」,但在C中它通常也被用來表示「字節」。

+0

謝謝!這有效!你將如何扭轉這個過程? – jaymo