2016-08-01 5 views
0

out 서버에서 base64로 인코딩 된 문자열을 얻습니다.Base64 문자열 NSData로 디코딩되고 UTF-8로 인코딩

DLog(@"parseing string to data: %@", value); 

NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:value options:0]; 
DLog(@"decoded value: %@", decodedData); 

NSString *encodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding]; 
DLog(@"encodedString: %@", encodedString); 

로그인 : 나는 64 기수로 디코딩

parseing string to data: UEsDBBQAAAAIACmEAUlpoChO7hYAAIHNBgAGABwAc20uZGJmVVQJAAMdwJ9XHcCfV3V4CwABBOcDAAAE5wMAAO2dzaokxxFGr5AX9sLv0N61wRSVWf...> 

decoded value: <504b0304 14000000 08002984 014969a0 284eee16 000081cd 06000600 1c00736d 2e646266 55540900 031dc09f 571dc09f 5775780b 000104e7 03000004 e7030000...> 

encodedString: (null) 

을하지만 내 고통은 항상 null입니다.

왜 이런 일이 일어날 수 있습니까?

답변

0

initWithData 문서는 말한다 :

반환 값이 초기화가 어떤 이유 (예를 들어, 데이터 인코딩에 유효한 데이터를 나타내지 않는 경우)에 실패하면 nil을.

유효한 문자열로 시작하여 데이터로 변환하고 로그에 인쇄 한 다음 initWithBase64EncodedString에서 가져온 데이터를 비교하십시오.