diff --git a/gbgb2.c b/gbgb2.c new file mode 100644 index 0000000..75173e3 --- /dev/null +++ b/gbgb2.c @@ -0,0 +1,58 @@ +#include +#include +#include + +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"); + } +}