Zethyr Skrevet 30. juni 2004 Del Skrevet 30. juni 2004 Hepp ! Jeg har to .bin filer som jeg har lest inn i hver sine buffere. Jeg skal med nr#1: loope gjennom hver byte, øke alle som er større enn 30(hex) med 1, og alle som er mindre enn 2A(hex) skal økes med 2. ta vekk byte nr# 2, 4, 6, 8 ... buffer1 & buffer2 (bitwise AND ) på hver byte helt til en av bufferne er ferdig. i resultatet skal man XORe hver byte med sin egen verdi. legge sammen alle bytene, og vise tallet på skjermen. Hittil har jeg lest inn filene og funnet størrelsen av hver. #include <iostream> #include <fstream> using namespace std; int main(){ //read ch file char* buffer; long size; ifstream file("huge_ch.bin", ios::in|ios::binary|ios::ate); size = file.tellg(); file.seekg(0, ios::beg); file.read(buffer, size); file.close(); cout<<"read huge_ch.bin finished\n"; //read xor file char* bufferx; long sizex; ifstream filex("hugex0r.bin", ios::in|ios::binary|ios::ate); sizex = filex.tellg(); filex.seekg(0, ios::beg); filex.read(bufferx, sizex); filex.close(); cout<<"read hugex0r.bin finished\n"; //add to some char* place = buffer; for(int i=0;i<size;i++){ if(place[i]<48){place[i]+=1;}; cout<<place[i]; } delete[] buffer; delete[] bufferx; system("pause"); return 0; } Lenke til kommentar
søppel Skrevet 30. juni 2004 Del Skrevet 30. juni 2004 Ok, og spørsmålet/problemet er? Lenke til kommentar
Zethyr Skrevet 1. juli 2004 Forfatter Del Skrevet 1. juli 2004 Ok, kan paste oppgaven min. Får det ikke til å virke. Hvordan regner man f.eks. med hex values i C++ ? Gjøre dem om til titallssystemet slik jeg har gjort? oppgave: # download this file. Process every byte, if it is greater than 30 (hex) then add 1 to it. If it is smaller than 2A (hex) then add 2 to it. # Reduce the filesize by half by taking every second byte out of the file (delete the second, the fourth etc). Put the result into part1.dat. # Take this file AND (the & operator) each byte with part1.dat. Finish when any end of file (whichever is first) is reached. # Put the result into a file called part2.dat. Take part2.dat and XOR(the ^ operator) each byte of it with its own value and put the result into a new file called part3.dat. # Finally take part3.dat and add (+) every byte together, append _solution to the resulting number, and enter it in the box below. Lenke til kommentar
søppel Skrevet 1. juli 2004 Del Skrevet 1. juli 2004 (endret) Hvordan regner man f.eks. med hex values i C++ ? #include <iostream> using namespace std; int main() { int a = 0xa + 0x1e; cout << a << endl; return(0); } // main ..skriver ut summen av 0A og 1E. oppgave:..blabla.. Jaha? For en hundrings (ellernoe..heh) kan du få løsningen/kildekoden av meg. Hvis ikke det høres bra nok ut for deg er det bare å sette i gang å lese slik alle andre her har måttet gjøre: http://nostdal.ath.cx/cgi-bin/ciki?do=view&page=9 ("Free books about C++") Edit: (eventuellt satse på at noen her har så lite å gjøre at de gidder å gjøre det gratis for deg) Endret 1. juli 2004 av søppel Lenke til kommentar
Zethyr Skrevet 2. juli 2004 Forfatter Del Skrevet 2. juli 2004 Kommet et stykke på veg, men hva er en 'systemNullReferenceError' ? Kommer når jeg kjører programmet, ikke når det kompileres. Hvis dere trenger kode, så spør om den. Lenke til kommentar
saboi Skrevet 2. juli 2004 Del Skrevet 2. juli 2004 Ja selvfølgelig trenger man kode. Hvordan skal vi ellers kunne se hva som er galt? Men jeg tipper at du har en referanse som ikke er gyldig. At du returnerer et lokalt/temp objekt fra en funksjon som returnerer T& f.eks. Lenke til kommentar
Zethyr Skrevet 2. juli 2004 Forfatter Del Skrevet 2. juli 2004 #include <iostream> #include <fstream> using namespace std; char* buffer1; int main(){ //read ch file char* buffer; long size; ifstream file("huge_ch.bin", ios::in|ios::binary|ios::ate); size = file.tellg(); file.seekg(0, ios::beg); file.read(buffer, size); file.close(); cout<<"read huge_ch.bin finished\n"; //read xor file char* bufferx; long sizex; ifstream filex("hugex0r.bin", ios::in|ios::binary|ios::ate); sizex = filex.tellg(); filex.seekg(0, ios::beg); filex.read(bufferx, sizex); filex.close(); cout<<"read hugex0r.bin finished\n"; //add some for(int i=0;i<size;i++){ if(buffer[i]<0x30){ buffer[i]+=1; }; if(buffer[i]>0x2A){ buffer[i]+=1; }; cout<<buffer[i]; } //delete half for(int i=2, n=0;i<size;i+=2, n++){ buffer1[n]=buffer[i]; } delete[] buffer1; delete[] buffer; delete[] bufferx; system("pause"); return 0; } Feilen finner jeg i den første for loopen. muligens den andre også, har ikke kommet så langt. Gjerne se etter om koden gjør det den skal også. Lenke til kommentar
saboi Skrevet 2. juli 2004 Del Skrevet 2. juli 2004 Har du hørt om å allokere plass? char* buffer; <-- den peker bare på en char. For at du skal få plass til mange bokstaver der må du gjøre char* buffer = new char[3]; da har du plass til 3 bokstaver. Det er det som er feil. Lenke til kommentar
søppel Skrevet 2. juli 2004 Del Skrevet 2. juli 2004 (endret) Edit: Ups, feilpostet .. Endret 3. juli 2004 av søppel Lenke til kommentar
Zethyr Skrevet 3. juli 2004 Forfatter Del Skrevet 3. juli 2004 (endret) visste at det var noe... Har drevet med ganske mye andre rare språk etter at jeg leste Sam's TYC++ 5, så jeg har glemt en del... Takk så mye. ps. new char[3], har ikke den plass til fire bokstaver, eller var den siste termineringstegn eller noe ? Endret 3. juli 2004 av Zethyr Lenke til kommentar
Zethyr Skrevet 3. juli 2004 Forfatter Del Skrevet 3. juli 2004 (endret) Geek_nr4 fatal error LNK1201: error writing to program database 'c:\Documents and Settings\Magnus\Mine dokumenter\Visual Studio Projects\Geek_nr4\Debug\Geek_nr4.pdb'; check for insufficient disk space, invalid path, or insufficient privilege Har ikke gjort noenting, og jeg har mer enn nok diskplass. ps: satte på noen char* buffer = new char[]; , men fikk samme error som ovenfor, bare litt tidligere. (uff, lenge siden jeg drev med dette, men artig å lære) edit: bare compileren som ikke likte det, copy-pastet koden inn i nytt prosjekt, så fungerer alt hittil. Endret 3. juli 2004 av Zethyr Lenke til kommentar
Zethyr Skrevet 3. juli 2004 Forfatter Del Skrevet 3. juli 2004 (endret) problem løst, xor med seg selv blir, null, så det var enklere enn jeg trodde. Endret 3. juli 2004 av Zethyr Lenke til kommentar
søppel Skrevet 3. juli 2004 Del Skrevet 3. juli 2004 int a = 255; cout << a << endl; cout << hex << a << endl; Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå