Dělení binárního souboru - skriptem nebo programem
Oak
oak.brno na seznam.cz
Úterý Srpen 5 14:57:06 CEST 2003
Dobrý den,
mám image soubor, potřebuji ho rozdělit na X částí. Vím, že každá část má
začínat na "Øÿá" (ASCII, hexd. to je "d8 ff e1") a končit před začátkem
další.
Zkoušel jsem KHexEdit; v principu to funguje,ale v 90% při pokusu zkopírovat
vybraný řetězec (velikostí "větší než menší" :-) do schránky spadne. Navíc
bych těch cca 150 fotek takto vyklikával asi až do Vánoc. Další hex-editory
možnost vybrat část souboru jako nový vůbec nemají (zk. jsem ghex, vche).
Zkusil jsem napsat malý prográmek, ale nefunguje mi správně, neovládám dobře
žádný klasický programovací jazyk.
Uvítám jakoukoli použitelnou radu, jak zpracovat skript, nebo program, nebo
použít nějakých hotových utilit.
Zdraví, Oak.
-------------------------------------------------------
Pozn.: Ten prográmek kopíroval znak po znaku soubor ze vstupního do
výstupního (potud fungoval :-). Snažil jsem se mu přidat podmínku, že pokud
nalezne žádanou sekvenci znaků, aby přepnul výstup do nového souboru
("obr[n].jpeg"). Chybně jsem ale asi začal už u porovnávání, v podmínkách;
chtělo by to asi hexadecimální zadání hledanýho znaku, ale na to jsem
bohužel krátkej. V literatuře (Linux, začínáme programovat) jsem nic
podobnýho bohužel nenašel.
kopy.c:
----------
#include <stdio.h>
#include <stdlib.h>
int main() {
int a; int b; int c;
int n; n = 0;
FILE *in, *out;
in = fopen("pracovni.img","r");
out = fopen("file_0.out","w");
while((c = fgetc(in)) != EOF) {
// Ø ÿ á - hledaný řetězec
if(c == 'á'){
if(b == 'ÿ'){
if(a == 'Ø'){
n = n+1;
printf ("ahoj");
out = fopen("obr[n].jpeg","w");
}
}
}
a = b;
b = c;
n = n+1;
fputc(c,out);
}
printf ("\n%e\n",n);
exit(0);
}
Další informace o konferenci Linux