2011-03-03 38 views
0

我从数据库中iPhone如何在iPhone中将数据库的NSData从数据库转换为NSString?

这里转换图像的NSData到NSString的是我的代码

imageData1 = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, 2) length: sqlite3_column_bytes(compiledStatement, 2)];   
NSLog(@"the data length %d",[imageData1 length]); 
NSString* newStr1 = [[NSString alloc] initWithData:imageData1 encoding:NSUTF8StringEncoding]; 

数据的长度为6511,但newstr1是零

参照此stack overflow question 。我无法从数据库中创建任何任意二进制数据的UTF-8编码字符串 - 数据实际上需要UTF-8编码。我只需要NSString的格式,将它作为CSV文件的输入。

编辑:

imageData1 = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, 3) length: sqlite3_column_bytes(compiledStatement, 3)];   
NSString * Str1 = [NSString base64StringFromData: imageData1 length: [imageData1 length]]; 
NSData *data1=[NSData base64DataFromString:Str1]; 
NSString* newStr1 = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding]; 

底座64的编码和解码也经过我的字符串是零。

回答

3

机会是非常好的,你实际上并不想转储原始二进制数据转换成CSV文件。您可能想要查看base64编码数据。 This previous answer应该能够帮助你。

+0

你可以更详细点吗? – Warrior

+1

NSString旨在包含文本,而不是任意的二进制数据。 CSV文件也更适合比任意的二进制数据,文本和投掷任意的二进制数据中可能存在混淆尝试读取你的文件的各种其他程序。 的“的base64”编码只使用字母,数字和一组有限的标点符号是对的事情,预计纯文本存储安全的转换二进制数据为文本字符串。 – Anomie

+0

我送CSV文件编码字符串中的Base64,它被打开,只有文字而不是图像? – Warrior

相关问题