【问题标题】:How to convert NSData of Image from database to NSString in iPhone?如何将图像的 NSData 从数据库转换为 iPhone 中的 NSString?
【发布时间】:2011-07-08 04:10:18
【问题描述】:

我正在将图像的 NSData 从数据库转换为 iPhone 中的 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为nil

参考这个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];

经过 base 64 编码和解码后,我的字符串也为零。

【问题讨论】:

    标签: iphone nsstring nsdata


    【解决方案1】:

    很有可能您实际上并不想将原始二进制数据转储到 CSV 文件中。您可能希望改为研究 base64 编码数据。 This previous answer 应该可以帮到你。

    【讨论】:

    • NSString 旨在包含文本,而不是任意二进制数据。 CSV 文件也比任意二进制数据更适合文本,并且将任意二进制数据放入其中可能会混淆其他各种尝试读取您的文件的程序。 “base64”编码仅使用字母、数字和一组有限的标点符号将二进制数据转换为文本字符串,这些标点符号可以安全地存储在需要纯文本的内容中。
    • 我在 csv 文件中发送 base64 编码的字符串,它只作为文本而不是图像打开?
    • 大多数读取 CSV 文件的工具会将二进制数据读取为乱码而不是图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多