我有一些代码执行命令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?#/??#
答案 0 :(得分:1)
所有数据都保存在0和1(此时写入)。将文件打印到显示器时,它会为ASCII字符提供保存的值。
将文件保存为“二进制”时,这基本上意味着不会转换换行符。 PNG已正确保存,但“解压缩”可能会解压错,拉链已损坏或拉链中的png已损坏。
这是正确的Cocoa:
[data writeToFile:@"/picture.png" atomically:YES];
原子地:建议使用“是”。
您的代码问题可能是NSData不包含有效的PNG数据,而只包含原始图像数据,GIF数据,JPEG数据或其他类型的非png数据。
答案 1 :(得分:0)
在第三次阅读极长的man
页面后,我发现了一种更好的方法来完成它,使用-d
参数。