Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. short date_compress(int day, int month, int year) {
  6. short d = ((((year % 100) << 4) + month) << 5) + day;
  7. return d;
  8. }
  9.  
  10. int* date_decompress(int cdate) {
  11. static int d[3];
  12.  
  13. d[0] = cdate & 0x1f;
  14. d[1] = (cdate >> 5) & 0xf;
  15. d[2] = 2000 + (cdate >> (5 + 4));
  16.  
  17. return d;
  18. }
  19.  
  20. short time_compress(int hour, int minute, int second) {
  21. short t = (((second << 6) + minute) << 4) + hour;
  22. return t;
  23. }
  24.  
  25. int* time_decompress(int ct) {
  26. static int t[3];
  27.  
  28. t[0] = ct & 0xf;
  29. t[1] = (ct >> 4) & 0x3f;
  30. t[2] = (ct >> 10) & 0x3f;
  31.  
  32. return t;
  33. }
  34.  
  35. int date_time_compress(int day, int month, int year, int hour, int minute, int second) {
  36. int dt = (date_compress(day, month, year) << 16) + time_compress(hour, minute, second);
  37. return dt;
  38. }
  39.  
  40. int* date_time_decompress(int dtc) {
  41. int* dt = malloc(8 * sizeof(int));
  42.  
  43. memcpy(dt, date_decompress(dtc >> 16), 4 * sizeof(int));
  44. memcpy(dt + 3, time_decompress(dtc), 4 * sizeof(int));
  45.  
  46. return dt;
  47. }
  48.  
  49. int main()
  50. {
  51. int day = 21;
  52. int month = 3;
  53. int year = 2019;
  54.  
  55. int hour = 10;
  56. int minute = 27;
  57. int second = 24;
  58.  
  59. printf("Eingabedaten\n");
  60. printf("Datum: %i/%i/%i\n", day, month, year);
  61. printf("Uhrzeit: %i/%i/%i\n\n", hour, minute, second);
  62.  
  63. short date_compressed = date_compress(day, month, year);
  64. printf("Datum Komprimiert:");
  65. printf("%#06x\n", date_compressed);
  66.  
  67. int *date_decompressed = date_decompress(date_compressed);
  68. printf("Datum Dekomprimiert:");
  69. printf("%i/%i/%i\n\n",
  70. *date_decompressed, // day
  71. *(date_decompressed + 1), // month
  72. *(date_decompressed + 2)); // year
  73.  
  74. short time_compressed = time_compress(hour, minute, second);
  75. printf("Uhrzeit Komprimiert:");
  76. printf("%#06x\n", time_compressed);
  77.  
  78. int *time_decompressed = time_decompress(time_compressed);
  79. printf("Uhrzeit Dekomprimiert:");
  80. printf("%i/%i/%i\n\n",
  81. *time_decompressed, // hour
  82. *(time_decompressed + 1), // minute
  83. *(time_decompressed + 2)); // second
  84.  
  85. int date_time_compressed = date_time_compress(day, month, year, hour, minute, second);
  86. printf("Datum/Uhrzeit Komprimiert:");
  87. printf("%#06x\n", date_time_compressed);
  88.  
  89. int *date_time_decompressed = date_time_decompress(date_time_compressed);
  90. printf("Datum/Uhrzeit Dekomprimiert:");
  91. printf("%i/%i/%i %i/%i/%i\n\n",
  92. *date_time_decompressed, // day
  93. *(date_time_decompressed + 1), // month
  94. *(date_time_decompressed + 2), // year
  95. *(date_time_decompressed + 3), // hour
  96. *(date_time_decompressed + 4), // minute
  97. *(date_time_decompressed + 5)); // second
  98.  
  99. return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement