Estoy leyendo en una etiqueta id3 donde el tamaño de cada cuadro se especifica en 3 bytes. ¿Cómo podría utilizar este valor como int?¿Cómo se lee en un valor de tamaño de 3 bytes como un entero en C++?
Respuesta
Leer cada byte y luego unirlas en su int
:
int id3 = byte0 + (byte1 << 8) + (byte2 << 16);
Asegúrese de tomar en cuenta endianness.
'+' o '|'? [..] – Muggen
No importa, son lo mismo en este caso. –
Excelente, gracias – carboncomputed
Leer los bytes en forma individual, y los pusieron en los lugares correctos en un int:
int value = 0;
unsigned char byte1 = fgetc(ID3file);
unsigned char byte2 = fgetc(ID3file);
unsigned char byte3 = fgetc(ID3file);
value = (byte1 << 16) | (byte2 << 8) | byte3;
Editar: parece que ID3 utiliza el orden de bytes de red (big-endian) - código para que coincida cambiado.
Esto supone que' char' es unsigned ... (Además, 'fgetc' devuelve un' int'!) –
@OliCharlesworth: fgetc devuelve un int, pero los únicos valores que pueden ser negativos (como un int) son cosas como EOF (que estoy ignorando para el momento). –
La gente de C++ probablemente lo odia por usar 'fgetc()', pero estoy con Jerry. –
- 1. Convertir 3 bytes en un entero con signo en C#
- 2. Lectura de 3 bytes como un número entero
- 3. py3k: ¿Cómo se lee un archivo dentro de un archivo zip como texto, no como bytes?
- 4. ¿Cómo se lee una matriz de bytes de un DataRow en C#?
- 5. Como lee bytes desde NSData
- 6. C++ asegurando un tamaño flotante de 4 bytes
- 7. Cómo convertir un entero a matriz de bytes en php
- 8. ¿Cómo se lee en números como argumentos de comando?
- 9. convertir un número entero en una cadena como 3
- 10. Lectura de bytes de tamaño "entero" de una matriz char *.
- 11. ¿Lees dos bytes en un número entero?
- 12. Sincronización en un valor entero
- 13. ¿Cómo se determina el tamaño de un objeto en C++?
- 14. ¿Cómo agregar un valor entero en NSMutableArray?
- 15. Obtener un valor de bytes utilizando stringstream
- 16. ¿Cómo se lee un byte de archivo por byte en Python y cómo imprimir un bytelist como un binario?
- 17. ¿Cómo trato un entero como una matriz de bytes en Python?
- 18. ¿Cómo se lee un valor de cadena con un delímetro en Arduino?
- 19. Cuando un doble con un valor entero se convierte en un número entero, ¿se garantiza que lo haga "correctamente"?
- 20. convertir un valor de cable a un entero en verilog
- 21. Cómo extraer un valor entero de NSRange?
- 22. ¿Valor entero de un personaje en rubí?
- 23. ¿Un valor entero en recursos de WPF?
- 24. Desreferenciar el valor entero de un bucle en Java
- 25. ¿Cómo leer un entero en Erlang?
- 26. tratar JSON objetos de valor como un número entero
- 27. Cómo leer un entero de un byte []
- 28. Comprueba que un valor entero sea nulo en C#
- 29. ¿Cómo se lee un archivo en un mapa de bits de Java?
- 30. Tamaño de bytes de un NSDictionary
¿Qué significa "lectura"? ¿De memoria? ¿De un archivo? –
En C, podría utilizar algo llamado campo de bit tipeado como int ocupando 3 bytes = 3 * 8 = 24 bits. En C, esto se denota por 'int int_3byte: 24' (dentro de una estructura). Supongo que C++ tiene un mecanismo equivalente para esto. – phimuemue
Por favor, no use un campo de bits. –