#include <stdio.h>
#include <string.h>
#include <stdint.h>

typedef struct {
  uint8_t octet1;
  uint8_t octet2;
  uint8_t octet3;
  uint8_t octet4;
} quartet;

int main ( int argc, char **argv)
{
  int i;
  char buff[26];
  char buff2[18];
  int32_t values[8];
  uint32_t valbin[8];
  quartet value;

  while (fread(&buff, 26, 1, stdin)) {
    /*buff[25] = '\0';*/
    if (strncmp(buff, "#################\n", (size_t)18) == 0) {
      if (!(fread(&buff2, 18, 1, stdin))) {
        fprintf(stderr, "Erreur lesture après ###...#");
        return(1);
      } else {
        /*buff2[17] = '\0';*/
        strncpy(buff, &buff[18], 8);
        strncpy(&buff[8], buff2, 18);
      }
    }


    i = 3;

    value.octet1 = buff[3*i+1];
    value.octet2 = buff[3*i+2];
    value.octet3 = buff[3*i+3];
    value.octet4 = 0;
    /*memcpy(&values[i], &value, sizeof(quartet));*/

    valbin[i] = buff[3*i+1]*256*256*256 + buff[3*i+2]*256*256 + buff[3*i+3]*256;
    memcpy(&values[i], &valbin[i], sizeof(int32_t));

    if (value.octet1 & 0b10000000) {
      printf("Valeur négative trouvée: %02x %02x %02x %d\n", value.octet1, value.octet2, value.octet3, values[i]);
    }
    fprintf(stdout, "%02x %02x %02x %d", value.octet1, value.octet2, value.octet3, values[i]/256);

/*
    for (i=1; i<25; i++) {
      fprintf(stdout, "%02x ", buff[i]);
    }
*/
    printf("\n");
  }
}
