1
votes

I want to convert the NSData into byte array and given below is the code that i have used

    NSData *imageData = UIImagePNGRepresentation(recipeImage.image);
    NSUInteger len = [imageData length];
    Byte *byteData = (Byte*)malloc(len);
    memcpy(byteData, [imageData bytes], len);
    NSLog(@"%8s",byteData);

But its giving me an error when i post the byteData to the webservice which is given below

"Server was unable to process request. ---> Parameter is not valid."

and when i print the byteData this is what i get in the console

âPNG

I tried searching the docs for NSData and found the getBytes method but that too was not of any use i was still getting the same error.

Could you please let me know from the code above as in where i am wrong or what mistake i am making in converting the data into byte array

Edit: I have tried using the

[imageData getBytes:&byteData length:length];

Its giving me a bad access error

2
What are you trying to do? Get the pixel data from the picture? - borrrden
Remove the & and the bad access error will go away. I don't see the point of this code anyway - why not leave the data inside the NSData object and avoid the expense of additional memory and copying data? - trojanfoe
You can also simply reference the byte array as is using Byte *byteData = imageData.bytes; - borrrden

2 Answers

3
votes

Try this

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

Your problem is somewhere totally different.

You are sending data to a web service, and that fails. Show us how you send the data to the web service. Converting NSData to a byte array is absolutely pointless. imageData.bytes is as good a byte array as you are ever going to get.