用cocoa保存二进制数据

时间:2011-01-23 23:37:56

标签: cocoa binary

我有一些代码执行命令unzip -p myzip.zip picture.png,打印出picture.png的“二进制”数据。如果使用正确的扩展名保存它,打开它时会发出一个错误,指出该文件已损坏。所以我的问题是使用cocoa将这些数据写入文件的正确方法是什么?现在我只是使用[data writeToFile:@"/picture.png" atomically:NO];。我知道二进制应该是1和0,但它给出了“二进制”代码:

?VaE?.?_QA?J+G:'GD?{C??!? ??٬?d?V ?E?e???8^?t?-P?ʍ?psq???N?S:????,l^&?,_."? ??!a?Y`?,?-??.I ?ILD]?Ҙ佊??????????FLߊŜ?D??Y%?@O?#/??#

2 个答案:

答案 0 :(得分:1)

所有数据都保存在0和1(此时写入)。将文件打印到显示器时,它会为ASCII字符提供保存的值。

将文件保存为“二进制”时,这基本上意味着不会转换换行符。 PNG已正确保存,但“解压缩”可能会解压错,拉链已损坏或拉链中的png已损坏。


这是正确的Cocoa:

[data writeToFile:@"/picture.png" atomically:YES];

原子地:建议使用“是”。


您的代码问题可能是NSData不包含有效的PNG数据,而只包含原始图像数据,GIF数据,JPEG数据或其他类型的非png数据。

答案 1 :(得分:0)

在第三次阅读极长的man页面后,我发现了一种更好的方法来完成它,使用-d参数。