Cześć!
Jak ustawić, by przy "seeku" były wpisywane wartość 0xFF zamiast 0x00?
// przyklad w QT
#include <QFile>
#include <QDataStream>
int main(){
QFile file("out.bin");
file.open(QFile::WriteOnly);
QDataStream stream(&file);
file.seek(18);
stream << quint8(1);
file.seek(2);
stream << quint8(2);
file.close();
return 0;
}
$ hexdump -C out.bin
00000000 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000010 00 00 01 |...|
W dużym skrócie:
-program ma stworzyć plik(~3GB)
-są wytyczne jak mają wyglądać dane fragmenty pliku (lista z danymi i adresami)
-miejsca gdzie nie były wpisywane dane, muszą mieć określoną wartość (np. 0xFF) - czyli "pad"
Problem mam właśnie z domyślną wartością "padów", jak to zmienić?
Tymczasowe rozwiązanie to, przeanalizowanie jaka będzie wielkość pliku, stworzenie tablicy wypełnionej wartościami "pad" i w pętli wypełnianie pliku.
Problemy:
- optymalna wielkość tablicy, mała - wolno będzie dziubać, duża - marnowanie miejsca w pamięci RAM
- podwójne wpisywanie danych do pliku, najpierw wypełnienie wartościami, następnie wpisywanie docelowych fragmentów
- dodatkowa analiza aby określić wielkość pliku
Wolałbym mieć możliwość:
// ...
file.fillByte(0);
// ..
I po problemie, seek'ując plik, sam się wypełnia tymi wartościami.
Z góry dziękuję za pomoc.