| Mesaj |
Info autor |
Postat la 22 Mar 2009 08:59:05 Subiect: Conversie hex to dec (help)
|
|
|
Jad info:
|
Jad:
Salutare tuturor, Am si eu un fisier care arata asa in hex editor: Cod sursă: 4C 41 52 43 15 00 00 00 0A 00 62 72 69 64 67 65 2E 6F 67 67
LARC......bridge.ogg
E o arhiva la un joc si vreau sa incerc sa fac un unpacker pentru el. (arhiva e f simplu de inteles) Problema care o am e ca nu stiu cum sa fac unpacker-ul. Pana acum am ajuns la codul acesta: Cod sursă:
#include
#include
#include
#include
#include
#include
using namespace std;
#define BYTE 4
int main(int argc, char *argv[]){
FILE *fpArchive;
char *minibuff;
minibuff = new char [BYTE];
string heather = "";
int decimalValue = 0;
fopen_s(&fpArchive, "bgm.la", "rb");
fread_s(minibuff, BYTE, BYTE, 1, fpArchive);
heather.append(minibuff,0,BYTE);
if(heather != "LARC"){
printf("Error: not a CFF .la file.n");
return 0;
}
heather.clear();
fread_s(minibuff, BYTE, BYTE, 1, fpArchive);
if(!minibuff){
printf("No files in archive.n");
return 0;
}
decimalValue = sscanf(minibuff, "%x", decimalValue);
printf("Number of files found: %d in %sn", decimalValue,minibuff);
fclose(fpArchive);
}
Cum fac sa convertesc minibuff in format zecimal ? am incercat atoi, strtol, sscanf,sprintf toate imi dau valoarea 0 Multumesc anticipat.
Ultima editare efectuată de Jad pe 22 Mar 2009 09:00:29; 1 editări în total
|
Status:
Înregistrat pe: 13 Feb 2009 12:43:46
Vârsta: 24 ani
Mesaje: 12
Locatie: Braila
Programator junior
|
| |
Postat la 22 Mar 2009 10:26:12 Subiect: < fara subiect >
|
|
|
nekitu info:
|
nekitu:
heather ->> header
citeste intr-un int valoarea aia, ca vad ca e pe 4 bytes (15 00 00 00) daca aia e.
int numFiles; fread_s(&numFiles, 4, 4, 1, fpArchive);
numFiles e zecimal..
Ultima editare efectuată de nekitu pe 22 Mar 2009 10:27:07; 1 editări în total
SpoOoOoock! Life Is Too Short For Cheap Chocolate
|
|
| |
Postat la 22 Mar 2009 14:18:30 Subiect: Re:
|
|
|
Jad info:
|
Jad:
nekitu a scris: heather ->> header citeste intr-un int valoarea aia, ca vad ca e pe 4 bytes (15 00 00 00) daca aia e. int numFiles; fread_s( &numFiles, 4, 4, 1, fpArchive); numFiles e zecimal.. A mers multumesc mult. Nu stiam ca daca citesc intr-un int valoarea este inversat si byte orderul. De asta tot incercam sa le salvez intr-un char ca sa pot sa il inversez eu manual.
Ultima editare efectuată de Jad pe 22 Mar 2009 15:46:18; 1 editări în total
|
Status:
Înregistrat pe: 13 Feb 2009 12:43:46
Vârsta: 24 ani
Mesaje: 12
Locatie: Braila
Programator junior
|
| |
Postat la 23 Mar 2009 18:57:47 Subiect: < fara subiect >
|
|
|
Jad info:
|
Jad:
Am un struct Cod sursă: struct packdata{
string filename;
int filesize;
int fileoffset;
} ;
packdata *fData;
fData = new packdata [intRead];
fData[1].filename = heather;
fread_s(&intRead, 4, 4, 1, fpArchive);
fData[1].filesize = intRead;
fread_s(&intRead, 4, 4, 1, fpArchive);
fData[1].fileoffset = intRead; imi compileaza dar da o eroare dupa ce rulez programul la linia packdata *fData; Cod sursă:
Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
daca pun packdata fData[intRead] imi spune ca nu poate crea un array de dimensiune 0 Unde gresesc?
Ultima editare efectuată de Jad pe 23 Mar 2009 18:58:32; 1 editări în total
|
Status:
Înregistrat pe: 13 Feb 2009 12:43:46
Vârsta: 24 ani
Mesaje: 12
Locatie: Braila
Programator junior
|
| |
Postat la 24 Mar 2009 01:08:57 Subiect: < fara subiect >
|
|
|
nekitu info:
|
nekitu:
intRead tre sa fie >=1, verifica-l, debug indecsii in array incep de la 0 nu de la 1 si e HEADER!!! nu heather  , ai vreo gagica pe nume Heather ?
Ultima editare efectuată de nekitu pe 24 Mar 2009 01:10:15; 1 editări în total
SpoOoOoock! Life Is Too Short For Cheap Chocolate
|
|
| |
Postat la 24 Mar 2009 07:22:35 Subiect: Re:
|
|
|
Jad info:
|
Jad:
nekitu a scris: intRead tre sa fie >=1, verifica-l, debug indecsii in array incep de la 0 nu de la 1 Stiu ca incep de la 0 acolo l-am pus de test ca vreau sa fac un for loop deci va fi inlocuit cu un i. Am incercat si 0 si tot aceeasi eroare imi da. intRead dupa ce citeste fisierul are valoarea 21 nu stiu de ce o vede ca 0. Cand ajung acasa o sa incerc sa ii fac un debug. si e HEADER!!! nu heather  , ai vreo gagica pe nume Heather ? mmm maybe?  Engleza mea scrisa e la pamant sorry.
|
Status:
Înregistrat pe: 13 Feb 2009 12:43:46
Vârsta: 24 ani
Mesaje: 12
Locatie: Braila
Programator junior
|
| |
Postat la 24 Mar 2009 22:25:08 Subiect: < fara subiect >
|
|
|
Jad info:
|
Jad:
Am reusit sa termin ce am inceput. Wow asta e primul meu program in c  . Multumesc pentru ajutor
Ultima editare efectuată de Jad pe 25 Mar 2009 14:20:08; 4 editări în total
|
Status:
Înregistrat pe: 13 Feb 2009 12:43:46
Vârsta: 24 ani
Mesaje: 12
Locatie: Braila
Programator junior
|
| |
Postat la 25 Mar 2009 14:31:09 Subiect: Re:
|
|
|
Rimio info:
|
Rimio:
Jad a scris: Am reusit sa termin ce am inceput. Wow asta e primul meu program in c  . Multumesc pentru ajutor Defapt e C++, pentru ca ai folosit namespace-uri si "new"  . LE: Si invata sa eliberezi memoria alocata (cu delete pentru new si free pentru malloc). Acum nu conteaza, e un programel mic, dar mai tarziu o sa faci memory leakuri la tot pasul.
Ultima editare efectuată de Rimio pe 25 Mar 2009 14:32:52; 1 editări în total
If at first you don't succeed, you fail.
|
Status:
Înregistrat pe: 24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 800
Locatie: Pitesti, Arges
Programator
|
| |
Postat la 25 Mar 2009 22:57:36 Subiect: Re: Re:
|
|
|
Jad info:
|
Jad:
Rimio a scris: Defapt e C++, pentru ca ai folosit namespace-uri si "new"  . LE: Si invata sa eliberezi memoria alocata (cu delete pentru new si free pentru malloc). Acum nu conteaza, e un programel mic, dar mai tarziu o sa faci memory leakuri la tot pasul. Se pare ca mi-a fost lene sa mai pun 2 +-uri  . Am adaugat deja delete in aplicatie (au fost cateva probleme la capitolul asta cand am pus comanda intr-un loop. credeam ca face ceva in genul lui string.clear() si imi dadea eroare din cauza asta) Free si malloc nu sunt comenzi c ? sau delete si new sunt echivalentul lor in c++ ? Vreau sa ma invat sa fiu cat mai eficient dupa ce folosesc ceva sa eliberez resursele. Mai trebuie sa invat putin si despre optimizare in c++ ca nu stiu nimic despre topicul asta. E asta e mai am mult de invatat. Ty 4 the tips.
|
Status:
Înregistrat pe: 13 Feb 2009 12:43:46
Vârsta: 24 ani
Mesaje: 12
Locatie: Braila
Programator junior
|
| |
Postat la 26 Mar 2009 21:14:54 Subiect: < fara subiect >
|
|
|
Rimio info:
|
Rimio:
malloc si free sunt C, new si delete sunt C++  . Poti sa folosesti ambele metode de alocare a memoriei atata timp cat nu incerci sa faci free la variabile alocate cu new sau invers.
If at first you don't succeed, you fail.
|
Status:
Înregistrat pe: 24 Mar 2007 21:50:44
Vârsta: 23 ani
Mesaje: 800
Locatie: Pitesti, Arges
Programator
|
| |
Postat la 27 Mar 2009 05:57:04 Subiect: < fara subiect >
|
|
|
Jad info:
|
Jad:
Ultima editare efectuată de Jad pe 01 Apr 2009 09:09:55; 4 editări în total
|
Status:
Înregistrat pe: 13 Feb 2009 12:43:46
Vârsta: 24 ani
Mesaje: 12
Locatie: Braila
Programator junior
|
| |