[C++] Data modyfikacji pliku z nagłówku pliku ZIP

Awatar użytkownika
jarzabek89
Użytkownik
Użytkownik
Posty: 1337
Rejestracja: 11 lis 2007, o 21:36
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 4 razy
Pomógł: 181 razy

[C++] Data modyfikacji pliku z nagłówku pliku ZIP

Post autor: jarzabek89 »

W nagłówku pliku ZIP-konkretniej w Local file header. Znajduje się informacja o dacie/godzinie ostatniej modyfikacji pliku.

Kod: Zaznacz cały

Offset	Bytes	Description
10	      2     File last modification time
12	      2	  File last modification date
Obie te informacja znajdują się na 2 bajtach.
Początkowo myślałem, że zrobię tak:

Kod: Zaznacz cały

	
ZIP.read(reinterpret_cast<char *>(&Dane[i].czas_ostatniej_modyfikacji), 2);
ZIP.read(reinterpret_cast<char *>(&Dane[i].data_ostatniej_modyfikacji), 2);
Gdzie:

Kod: Zaznacz cały

Dane[i].czas_ostatniej_modyfikacji
Dane[i].data_ostatniej_modyfikacji
to short int

Ale nijak wiedziałem jak to interpretować.
Zrobiłem tak:

Kod: Zaznacz cały

ZIP.read(reinterpret_cast<char *>(&Dane[i].data), 4);
i zapisywałem to do int,unsigned int. Kombinowałem i patrzyłem co zwraca mi:

Kod: Zaznacz cały

    
czas=Dane[i].data;
char * data = asctime(localtime( & czas ) );
cout << "Data: " <<data;
Ale nijak ma się to ze stanem faktycznym
Gdyby ktoś mógł podpowiedzieć jak to należy zrobić będę wdzięczny.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Data modyfikacji pliku z nagłówku pliku ZIP

Post autor: Afish »

ZIP stosuje rozdziałkę dwusekundową, szczegóły na wiki:
The FAT filesystem of DOS has a timestamp resolution of only two seconds; .ZIP file records mimic this. As a result, the built-in timestamp resolution of files in a .ZIP archive is only two seconds, though extra fields can be used to store more precise timestamps. The .ZIP format has no notion of time zone, so timestamps are only meaningful if it is known what time zone they were created in.
A także na SO: ... ile-format
Awatar użytkownika
jarzabek89
Użytkownik
Użytkownik
Posty: 1337
Rejestracja: 11 lis 2007, o 21:36
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 4 razy
Pomógł: 181 razy

[C++] Data modyfikacji pliku z nagłówku pliku ZIP

Post autor: jarzabek89 »

Dzięki. W końcu udało mi się to rozszyfrować. Działa jak należy
ODPOWIEDZ