C'est ma première programmation en C, et sur un système UNIX. J'essaie de faire quelque chose d'assez simple. J'ai un fichier binaire qui est une image d'une carte de caméra Compact Flash, et se compose de quelques images JPG. J'essaie de lire le fichier, trouver la séquence d'octets correspondant à FF D8 FF E0, ou FF D8 FF E1, les signifiants du début d'un fichier JPG, puis tout écrire entre ce signifiant et le suivant à un nouveau fichier jpg .Lecture de fichiers binaires en C, sur des systèmes UNIX (Ubuntu 10.10)
En ce moment j'essaie juste d'obtenir mon ordinateur pour imprimer le fichier tel quel, en le lisant dans 512 blocs de taille, la taille indiquée des blocs dans le système de fichiers original. J'ai le code suivant:
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
int main (int argc, char *argv[])
{
FILE * raw;
FILE * currentimage;
char buf[512];
char beg1[32] = "11111111110110001111111111100001";
char beg2[32] = "11111111110110001111111111100000";
raw = fopen("card.raw", "rb");
while((fread(buf, sizeof(raw), 512, raw) > 0))
{
printf(buf);
printf("\n");
}
}
Il se contente d'afficher le fichier formaté dans ce que je suppose est ASCII, il ressemble à un tas de charabia. Comment puis-je obtenir ces données au format 1 binaire et 0 ou, mieux encore, hex 0-F?
Toute aide serait grandement appréciée.
P.S. beg1 et beg2 correspondent aux valeurs binaires des valeurs hexadécimales que je recherche, mais elles ne sont pas vraiment pertinentes pour le reste du code que j'ai en ce moment.
Tout va bien je suppose, mais comment obtenir une représentation des données en binaire ou en hexadécimal sans l'imprimer, comme je devrais faire une comparaison sur les données avant de l'écrire dans un fichier? Je n'ai pas vraiment besoin d'imprimer quoi que ce soit dans la version finale de ce programme. – joedillian
@joedillian Vous avez déjà les données binaires, vous les avez lues dans 'buf' Mais cela va prendre beaucoup de temps si vous voulez vraiment extraire ceci à partir d'une image de carte SD. Cette image peut contenir un système de fichiers que vous devrez interpréter. – nos