【问题标题】:Trouble converting a byte array on the iphone在 iphone 上转换字节数组时遇到问题
【发布时间】:2009-08-09 08:57:16
【问题描述】:

我在 iphone 项目上遇到了一些难题。

我正在从网络服务获取一些 JSON 数据。我可以将它反序列化成字典。其中一个字典值是二进制(图片),但我的 JSON 库将其反序列化为 NSDecimalNumbers 的 NSArray!

如何将这个 NSArray 的 NSDecimalNumbers 转换为 NSData 对象,以便我可以使用 [UIImage imageWithData:myNSData] 成功地从中生成图像?

【问题讨论】:

    标签: iphone objective-c arrays json byte


    【解决方案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 的值范围。

    【讨论】:

    • 您可以通过使用[NSMutableData dataWithLength:[arrayOfNumbers count]]; 分配缓冲区而不是malloc 来减少内存消耗和缓冲区副本。
    • 太棒了,工作就像一个魅力! =] 自从我做原始 C 以来已经有一段时间了,所以我猜我的语法是错误的。
    • +1 非常感谢。这几天我一直在为此苦苦挣扎。
    猜你喜欢
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2019-08-27
    • 2019-05-12
    • 2017-11-27
    相关资源
    最近更新 更多