Zapisywanie do pliku binarnego

0

Cześć
Mam problem, implementuje kompresor LZ77, gdzie wynik kompresji zapisuje w formie binarnej do pliku.
Jedna ze zmiennych zapisywanych może przyjmować wartości większe niż 255.
W przypadku mniejszych wartości nie ma problemu, większe zapisuja sie nieprawidłowo.
Jak poprawnie to obsłużyć ?

//std::get<0>data - jest typu int
 char index = (char)std::get<0>(data);
  file.write(&index, sizeof(index));

2

może przyjmować wartości większe niż 255.

To zapisujesz na więcej niż 1 bajcie, np. na 2 albo 4 albo 8. Musisz tylko zapisać w odpowiedniej kolejności bajtów (little/big endian)

0

Napisałbyś, jak to ma wyglądać, próbuje od godziny to ogarnąć.
Byłbym mega wdzięczny :D

2

o_O Może zwyczajnie:

 int data = std::get<0>(data);
 file.write(&data, sizeof(data));

Zapisze pewnie na 4 bajtach czy ile ma ten twój int.

0

To daje błąd "nie można dokonać konwersji argumentu 1 z „int *” do „const _Elem *” "
Plik otwieram w taki sposób jeżeli to ważne -

std::ofstream fie(filename, std::ios::out | std::ios::binary);
1

@Grzegorz Zych: Pokaż cały kod jaki masz. Może błędy są jeszcze w innym miejscu.

1

No przepraszam ale sam napisałeś //std::get<0>data - jest typu int więc ktoś tu kłamie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1