Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- short date_compress(int day, int month, int year) {
- short d = ((((year % 100) << 4) + month) << 5) + day;
- return d;
- }
- int* date_decompress(int cdate) {
- static int d[3];
- d[0] = cdate & 0x1f;
- d[1] = (cdate >> 5) & 0xf;
- d[2] = 2000 + (cdate >> (5 + 4));
- return d;
- }
- short time_compress(int hour, int minute, int second) {
- short t = (((second << 6) + minute) << 4) + hour;
- return t;
- }
- int* time_decompress(int ct) {
- static int t[3];
- t[0] = ct & 0xf;
- t[1] = (ct >> 4) & 0x3f;
- t[2] = (ct >> 10) & 0x3f;
- return t;
- }
- int date_time_compress(int day, int month, int year, int hour, int minute, int second) {
- int dt = (date_compress(day, month, year) << 16) + time_compress(hour, minute, second);
- return dt;
- }
- int* date_time_decompress(int dtc) {
- int* dt = malloc(8 * sizeof(int));
- memcpy(dt, date_decompress(dtc >> 16), 4 * sizeof(int));
- memcpy(dt + 3, time_decompress(dtc), 4 * sizeof(int));
- return dt;
- }
- int main()
- {
- int day = 21;
- int month = 3;
- int year = 2019;
- int hour = 10;
- int minute = 27;
- int second = 24;
- printf("Eingabedaten\n");
- printf("Datum: %i/%i/%i\n", day, month, year);
- printf("Uhrzeit: %i/%i/%i\n\n", hour, minute, second);
- short date_compressed = date_compress(day, month, year);
- printf("Datum Komprimiert:");
- printf("%#06x\n", date_compressed);
- int *date_decompressed = date_decompress(date_compressed);
- printf("Datum Dekomprimiert:");
- printf("%i/%i/%i\n\n",
- *date_decompressed, // day
- *(date_decompressed + 1), // month
- *(date_decompressed + 2)); // year
- short time_compressed = time_compress(hour, minute, second);
- printf("Uhrzeit Komprimiert:");
- printf("%#06x\n", time_compressed);
- int *time_decompressed = time_decompress(time_compressed);
- printf("Uhrzeit Dekomprimiert:");
- printf("%i/%i/%i\n\n",
- *time_decompressed, // hour
- *(time_decompressed + 1), // minute
- *(time_decompressed + 2)); // second
- int date_time_compressed = date_time_compress(day, month, year, hour, minute, second);
- printf("Datum/Uhrzeit Komprimiert:");
- printf("%#06x\n", date_time_compressed);
- int *date_time_decompressed = date_time_decompress(date_time_compressed);
- printf("Datum/Uhrzeit Dekomprimiert:");
- printf("%i/%i/%i %i/%i/%i\n\n",
- *date_time_decompressed, // day
- *(date_time_decompressed + 1), // month
- *(date_time_decompressed + 2), // year
- *(date_time_decompressed + 3), // hour
- *(date_time_decompressed + 4), // minute
- *(date_time_decompressed + 5)); // second
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement