2016-08-01 113 views
0

我从服务器中获取base64编码的字符串。我把它解码为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); 

登录:

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) 

但我的刺总是空。

为什么会发生这种情况?

回答

0

的initWithData文件说:

返回nil如果由于某种原因(例如,如果数据并不代表有效数据进行编码)的初始化失败。

尝试从一个有效的字符串开始,将其转换为数据,将其打印到日志中,并与从i​​nitWithBase64EncodedString中获取的数据进行比较。