Utilizator:
Parola:
Am uitat parola... | Cont nou!


Articole Resurse Echipe Competiții Proiecte Forum DevBlogs Locuri de muncă GDROMag Issue#1 GDROCon 2007

 
Forum » Programare » Altele » Conversie hex to dec (help)




Pagina 1 din 1 [ 1 ]

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


Status:
Înregistrat pe:
29 Sep 2006 11:33:12
Vârsta: 32 ani
Mesaje: 1033
Locatie: Brasov
Programator
7thFACTOR Entertainment Studios
 
    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 Smile, 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


Status:
Înregistrat pe:
29 Sep 2006 11:33:12
Vârsta: 32 ani
Mesaje: 1033
Locatie: Brasov
Programator
7thFACTOR Entertainment Studios
 
    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 Smile, ai vreo gagica pe nume Heather ?

mmm maybe? Embarassed 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 Shocked . 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 Shocked . Multumesc pentru ajutor


Defapt e C++, pentru ca ai folosit namespace-uri si "new" Wink.

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" Wink.

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 Rolling Eyes .
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++ Smile. 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:

Very Happy

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

 

Pagina 1 din 1 [ 1 ]


Server time: 09:08:33 19.05.2012



[ Termeni si conditii | Contact | F.A.Q. | Funny Pictures ]

© 2006 - 2012 Copyright 7thFACTOR Entertainment - All rights reserved