Quantcast
Channel: Forum | SweClockers
Viewing all articles
Browse latest Browse all 219854

C++ - Läsa in Valfri Del av Binär Fil?

$
0
0

Hej,

Jag håller på att lära mig lite om pcap-filer (https://en.wikipedia.org/wiki/Pcap) och med detta behöver jag skriva ett program som åtminstone kan läsa in hela pcap-filheadern (https://www.ietf.org/archive/id/draft-gharris-opsawg-pcap-01....).

Från vad jag har läst och testat mig till så bör dessa funktioner vara tillämpliga för att läsa in en del av en binär fil till en vector eller array:

  1. https://en.cppreference.com/w/cpp/io/basic_fstream

  2. https://en.cppreference.com/w/cpp/io/basic_istream/read

  3. https://en.cppreference.com/w/cpp/io/basic_istream/seekg

Jag vet att testfilen jag har (tcp_1.pcap) har detta "magic number" (i hex-format via hexdump):

d4 c3 b2 a1

Jag letar efter en funktion som ser ut typ såhär (pseudo-kod nedan):

std::vector<unsigned char> to_byte_vector(std::string file_path, int start_index, int num_of_bytes) {
std::vector<unsigned char> result;
std::fstream s{file_path, std::ios::in | std::ios::binary};

//Check if file can be opened.
if (!s.is_open()) {
std::cerr << "Failed to open '" << file_path << "'" << '\n';
} else {
/*Loop eller liknande för att läsa in num_of_bytes bytes från och med start_index
och placera dem i result.

Har ej kommit på den delen.

Kan man använda 's.seekg(start_index)'?*/
if (s.read(reinterpret_cast<char*>(&n), sizeof(n))) {
std::cout << std::hex << std::showbase << n << '\n';
}
}

return result;
}

Anledningen till att jag inte bara läser in hela filen på en gång är att om jag behöver läsa t.ex. en fil som är mycket större än vad RAM tillåter så kommer min kod sannolikt att krascha. Testfilen må vara enbart ett par hundra bytes men jag vill få det rätt från början.

Kan någon hjälpa mig lite på vägen tack? Har suttit ett bra tag och jobbat ensam.


Viewing all articles
Browse latest Browse all 219854

Latest Images

Trending Articles


Nike svart väst herr


Paow om heta sexnätterna med Zelmerlöw


Byta karriär från lärare


IFK nominerad till finlandssvenska bragdmedaljen


Jordansk familj lurade till sig tiotals miljoner i assistansfusk


Byta batteri i MEEC robotgräsklippare


731990 - Vjeteslav Kliuchnikov - Stockholms Auktionsverk Online


Pris på grund till Smålandsvillan


Borgå förr och nu


Dödsfall



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>