¿Cómo se escriben los datos binarios en un archivo? Quiero escribir flotantes en un archivo, en bruto, y luego volver a leerlos como flotadores. ¿Cómo haces eso?iPhone escribiendo datos binarios
5
A
Respuesta
6
estado experimentando con esto:
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];
Lo extraño es que el archivo escrito parece ser de 8 bytes y no 4. Es incluso posible inicializar el NSData con 0 longitud, añadir un flotador y luego escribe, y luego el archivo será de 4 bytes. ¿Por qué NSData agrega 4 bytes de forma predeterminada? Un NSData con longitud 4 debe dar como resultado un archivo con longitud 4, no 8.
3
Tenga en cuenta que Objective-C es solo una extensión del lenguaje de programación C.
Por lo general crear un NSFileHandle y luego escribir datos binarios de esta manera:
NSFileHandle handle*;
float f;
write([handle fileDescriptor], &f, sizeof(float));
Cuestiones relacionadas
- 1. escribiendo en archivos binarios
- 2. NOP para Binarios de Iphone
- 3. StreamReader y datos binarios
- 4. Datos binarios en MySQL
- 5. Envío de datos binarios
- 6. BlobBuilder arruina datos binarios
- 7. DbUnit y datos binarios
- 8. Git y datos binarios
- 9. Escribiendo código limpio, rendimiento para el iPhone
- 10. C++ String de STL para datos binarios
- 11. escribiendo datos exif en php
- 12. Escribiendo datos temporales de R
- 13. cURL Datos binarios y datos de formulario
- 14. Perl y MongoDB datos binarios
- 15. Obteniendo datos binarios usando SqlDataReader
- 16. Analizando datos binarios en C?
- 17. socket.io streaming de datos binarios
- 18. Javascript no está cargando datos binarios
- 19. Lectura de datos binarios sin reinterpret_cast
- 20. ¿Cómo interpretar datos binarios en C++?
- 21. Análisis de datos binarios con scala
- 22. Buscar cadena de caracteres en datos binarios
- 23. Insertar datos binarios en MySQL (sin PreparedStatement)
- 24. Publicar datos binarios en una aplicación RESTful
- 25. Mensajes de datos binarios de Websocket (ArrayBuffer)
- 26. Pasar datos binarios como argumentos en bash
- 27. almacenamiento de datos binarios en mysql
- 28. Descargando datos binarios usando XMLHttpRequest, sin overrideMimeType
- 29. Escribir datos binarios con FileSystemObject write()
- 30. conversión rápida de datos binarios en Python
Se puede utilizar un editor hexadecimal para examinar el contenido del archivo cuando tiene 8 bytes? Me parece que deberías poder elegir cuáles son tus 4 flotadores y los otros 4 pueden darte una pista de lo que está pasando mal. – Tim
De hecho. Los últimos 4 es el flotador. El archivo se ve así: 00 00 00 00 00 00 00 42 – quano
Aparentemente al ingresar un NSMutableData con una longitud hace que anexe esa longitud a sus datos y señale el espacio después. Iniciándolo con longitud 0 es la solución. Entonces uno puede preguntarse por qué uno querría iniciarlo con cualquier otra longitud que 0 en absoluto. – quano