2013-03-21 5 views
4

UData로 변환하는 UIImage를 사용하고 있습니다. 그리고 NsData를 Byte Array로 변환하고 Byte 배열을 json Parser의 도움으로 서버에 게시하려고합니다.objective c - nsdata를 바이트 배열로 변환하는 방법

다음 유형의 정적 문자열을 서버에 전달하고 받아 들여 저장합니다. 다음은 문자열 구문의 예입니다. 난 서버에 데이터를 게시하는 바이트 배열의 follwoing 유형 싶습니다.

[255,216,255,224,016747073700111096096002552190670,8,6,6 , 7,6,5,8,7,7,7,9,9,8,10,12 ...] 상기 결과를

난 다음으로 데이터를 이미지로 변환하고 :

UIImage *image = [UIImage imageNamed:@"image.png"]; 
NSData *data = UIImagePNGRepresentation(image); 

지금 나는 내가 사용하고 다음 코드를 바이트 배열에있는 NSData를 변환 할 :

NSUInteger len = [data length]; 
Byte *byteData = (Byte*)malloc(len); 
memcpy(byteData, [data bytes], len); 
free(byteData) 

와 나는 또한을 NSData이를 저장합니다. 하지만 결과에 대해 얻을 수 없습니다. 루프를 사용하여 코드를 입력했지만 매번 aPNG이 결과로 나타납니다.

위의 코드에서 문제가 있습니까?

제게 도움을 요청하고 이에 대한 도움을 요청하십시오. 사전에

감사합니다.

+0

바이트 배열 (용어의 C 의미로) 또는 숫자 값 목록을 나타내는 JSON 인코딩 문자열로 변환 하시겠습니까? – zneak

+0

버퍼를 채우 자마자 버퍼를 비우는 이유는 무엇입니까? 버퍼가 여전히 NSData 객체가 보유한 것을 보유 할 것으로 기대한다면 ... 당신은 그것을 자유롭게 할 수 없습니다. 버퍼가 더 이상 필요하지 않을 때에 만 해제하십시오. – mah

+0

답장을 보내 주셔서 감사 드리며 그런 식으로 사용해주십시오. 그것은 작동하지 않습니다. –

답변

10

나는 이것이 당신이 찾고있는 것인지 아닌지 100 % 확신하지 못했습니다. 시도해보십시오.

UIImage *image = [UIImage imageNamed:@"image.png"]; 
NSData *data = UIImagePNGRepresentation(image); 
NSUInteger len = data.length; 
uint8_t *bytes = (uint8_t *)[data bytes]; 
NSMutableString *result = [NSMutableString stringWithCapacity:len * 3]; 
[result appendString:@"["]; 
for (NSUInteger i = 0; i < len; i++) { 
    if (i) { 
     [result appendString:@","]; 
    } 
    [result appendFormat:@"%d", bytes[i]]; 
} 
[result appendString:@"]"]; 

이게 필요한가요?

+0

사소한 발언 :'bytes'를'const uint8_t * bytes'로 선언하면 rhs에 타입 캐스트가 필요 없습니다. –

관련 문제