【问题标题】:Convert NSData to byte array将 NSData 转换为字节数组
【发布时间】:2012-05-28 14:40:02
【问题描述】:

我想将 NSData 转换为字节数组,下面给出的是我使用过的代码

NSData *imageData = UIImagePNGRepresentation(recipeImage.image); NSUInteger len = [图像数据长度]; 字节 *byteData = (Byte*)malloc(len); memcpy(byteData, [imageData 字节], len); NSLog(@"%8s",byteData);

但是当我将 byteData 发布到下面给出的 web 服务时,它给了我一个错误

“服务器无法处理请求。--->参数无效。”

当我打印 byteData 时,这就是我在控制台中得到的内容

âPNG

我尝试在文档中搜索 NSData 并找到 getBytes 方法,但这也没有任何用处,我仍然遇到同样的错误。

能否请您从上面的代码中告诉我我错在哪里或者我在将数据转换为字节数组时犯了什么错误

编辑:我尝试过使用

[imageData getBytes:&byteData 长度:length];

它给了我一个糟糕的访问错误

【问题讨论】:

  • 你想做什么?从图片中获取像素数据?
  • 删除&,错误的访问错误就会消失。反正我看不出这段代码的意义——为什么不把数据留在NSData对象中,避免额外内存和复制数据的开销?
  • 你也可以使用Byte *byteData = imageData.bytes;简单地引用字节数组

标签: iphone objective-c ios xcode nsdata


【解决方案1】:

您的问题完全不同。

您正在向 Web 服务发送数据,但失败了。 向我们展示您如何将数据发送到网络服务。将 NSData 转换为字节数组是绝对没有意义的。 imageData.bytes 是一个很好的字节数组,你将得到。

【讨论】:

    【解决方案2】:

    试试这个

    NSData *imageData = UIImagePNGRepresentation(recipeImage.image);  
    NSUInteger len = [imageData length];
    Byte *byteData= (Byte*)malloc(len);
    [imageData  getBytes:byteData length:len];
    

    【讨论】:

    • @ParagBafna 我必须将什么参数发送到网络服务(imageData/len/byteData)?
    • 不用说,如果你使用 malloc 模式,请确保在使用 free 完成 byteData 后,你会泄漏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多