2011-01-23 94 views
0

我有一些執行命令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%[email protected]?#/??# 

回答

0

第三次閱讀極長的man頁面後,我發現了一個更好的方法來完成它,使用-d參數。

1

所有數據都保存在0和1(在這個時候寫的)。當您將文件打印到顯示器時,它會給出帶有保存值的ASCII字符。

將文件保存爲「二進制」時,這基本上意味着不會轉換換行符。 PNG被正確保存,雖然'解壓縮'可能解壓縮它錯誤,壓縮文件被破壞或壓縮文件中的png被破壞。


這是正確的可可:

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

原子:YES建議。


與您的代碼的問題可能是NSData的不包含有效PNG數據,但只有原始圖像數據,GIF數據,JPEG數據或另一種非PNG數據。