如何將二進制數據寫入文件?我想寫浮動到一個文件,原始,然後讀取它們作爲浮動。你是怎樣做的?iPhone寫入二進制數據
5
A
回答
6
一直在嘗試這樣的:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *file = [documentsDirectory stringByAppendingPathComponent:@"binaryData"];
float b = 32.0f;
NSMutableData *data = [NSMutableData dataWithLength:sizeof(float)];
[data appendBytes:&b length:sizeof(float)];
[data writeToFile:file atomically:YES];
NSData *read = [NSData dataWithContentsOfFile:file];
float b2;
NSRange test = {0,4};
[read getBytes:&b2 range:test];
奇怪的是,寫入的文件似乎是8個字節,而不是4與0長度初始化NSData的甚至有可能,追加浮動,然後寫入,然後文件將是4個字節。爲什麼NSData默認添加4個字節?一個長度爲4的NSData應該產生長度爲4而不是8的文件。
3
請注意,Objective-C只是C編程語言的擴展。
我通常會創建一個NSFileHandle然後寫二進制數據是這樣的:
NSFileHandle handle*;
float f;
write([handle fileDescriptor], &f, sizeof(float));
相關問題
- 1. 寫入二進制數據
- 2. 在R中寫入二進制數據
- 3. 使用FileSystemObject寫入二進制數據()
- 4. C#,寫入二進制數據
- 5. 寫入二進制數據html5 FileWriter
- 6. 將二進制數據寫入文件
- 7. 將二進制數據寫入NLog數據庫目標
- 8. Python寫入二進制
- 9. 二進制寫入SystemVerilog
- 10. 寫入二進制文件?
- 11. 二進制寫入地址
- 12. 寫入二進制文件
- 13. 寫入二進制文件
- 14. 寫入二進制文件
- 15. 寫的字符串二進制數據的二進制文件
- 16. C編寫的二進制數據++
- 17. 寫回數據到二進制文件
- 18. 寫大二進制數據到文件
- 19. 將文本或二進制數據寫入單個C函數
- 20. 使用NumPy數組數據寫入原始二進制文件
- 21. 二進制數據
- 22. 二進制數據
- 23. 寫入二進制數據時僅寫入大約240個字節
- 24. 如何在VBScript中將二進制數據寫入磁盤?
- 25. Linq to XML - 將二進制數據寫入XML的方式
- 26. 使用node.js寫入二進制數據的問題
- 27. Python將二進制圖像(PNG)數據寫入文件
- 28. 在ASP.NET 5中將二進制數據寫入響應
- 29. 開銷數據寫入到一個二進制文件
- 30. 如何在Delphi中將二進制數據寫入stdout?
你可以使用十六進制編輯器來檢查文件的內容時,它具有8個字節?在我看來,你應該能夠挑出哪一個是你的浮球,其他四個可能會給你一個線索,看看哪裏出了問題。 – Tim 2009-10-06 16:46:24
確實。最後4個是浮動。該文件如下所示:00 00 00 00 00 00 00 42 – quano 2009-10-06 16:53:53
顯然,使用長度來初始化一個NSMutableData會導致它將該長度附加到其數據並指向該空間。用長度爲0的方式引入它就是解決方案。然後人們可以問自己爲什麼要用任何其他長度爲0以上的長度來初始化它。 – quano 2009-10-06 19:49:11