16

WebServiceではJSON応答が来ています。応答では、画像がバイト配列として来ています。UIImageViewに画像を表示する必要があります。バイト配列をNSDataに変換しようとしています。しかし、それを行う方法がわかりません。どんな助けでもいただければ幸いです。バイト配列には画像データが含まれていると確信しています。参考のためのサンプルバイト配列:

        (137,
        80,
        78,
        71,
        ...
        66,
        96,
        130)

ありがとう

4

4 に答える 4

39

データを NSData オブジェクトに取得する例を次に示します。

const unsigned char bytes[] = {values here};
NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)];
NSLog(@"%@", data);
于 2012-08-08T08:50:10.087 に答える
21

最初に JSON を文字列の配列に変換する必要があります。たとえば、次のNSJSONSerializationクラスを使用できます。

NSArray *strings = [NSJSONSerialization JSONObjectWithData:theJSONString options:kNilOptions error:NULL];

次に、文字列配列を調べ、各エントリを整数に変換し、割り当てられたバイト ポインター/配列に追加します。

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;
}

最後に、バイトから NSData を作成し、それを使用して UIImage オブジェクトを初期化します。

NSData *imageData = [NSData dataWithBytesNoCopy:bytes length:c freeWhenDone:YES];
UIImage *image = [UIImage imageWithData:imageData];
于 2012-08-08T08:50:15.667 に答える
2

私はSwiftでそれを行う方法を持っています

if let serverBytesArray = serverAnswer as? NSArray {
    var bytes:[Byte] = []
    for serverByte in serverBytesArray {
        bytes.append(Byte(serverByte as UInt))
    }
    var data = NSData(bytes: bytes, length: bytes.count);
    let tmpDir = NSTemporaryDirectory()
    data.writeToFile(tmpDir.stringByAppendingPathComponent("test.pdf"), atomically: true)
}
于 2014-11-30T19:58:03.597 に答える