68 lines
1.6 KiB
C
68 lines
1.6 KiB
C
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <arpa/inet.h>
|
||
|
// FILE format is: 'header', then 2023 skipped bytes, then the number of interest
|
||
|
#define OURINT 1426915328
|
||
|
#define OFFSETTODATA 2023
|
||
|
|
||
|
int writeToFile(){
|
||
|
|
||
|
FILE* fp = fopen("toReadLater.txt","w+");
|
||
|
char c = 'h';
|
||
|
fwrite(&c, sizeof(char), 1, fp);
|
||
|
c = 'e';
|
||
|
fwrite(&c, sizeof(char), 1, fp);
|
||
|
c = 'a';
|
||
|
fwrite(&c, sizeof(char), 1, fp);
|
||
|
c = 'd';
|
||
|
fwrite(&c, sizeof(char), 1, fp);
|
||
|
c = 'e';
|
||
|
fwrite(&c, sizeof(char), 1, fp);
|
||
|
c = 'r';
|
||
|
fwrite(&c, sizeof(char), 1, fp);
|
||
|
unsigned int buf = OFFSETTODATA;
|
||
|
fwrite(&buf, sizeof(int), 1, fp);
|
||
|
fseek(fp, OFFSETTODATA, SEEK_CUR);
|
||
|
|
||
|
buf = OURINT;
|
||
|
fwrite(&buf, sizeof(int), 1, fp);
|
||
|
fclose(fp);
|
||
|
}
|
||
|
|
||
|
int readFromFile(){
|
||
|
FILE *fp = fopen("toReadLater.txt", "r+");
|
||
|
fseek(fp, 6 , SEEK_SET);
|
||
|
int skip = 0;
|
||
|
fread(&skip, sizeof(int), 1, fp);
|
||
|
// NOTE, in HW, the size of the section is a value in
|
||
|
// Big-Endian format, it will actually need conversion
|
||
|
fseek(fp, skip, SEEK_CUR);
|
||
|
unsigned int qBe = 0;
|
||
|
unsigned int qLe = 0;
|
||
|
int i;
|
||
|
unsigned char *c = (char *)(&qBe);
|
||
|
unsigned char *d = (char *)(&qLe);
|
||
|
for (i = 0; i < 4; i++)
|
||
|
{
|
||
|
c[i] = getc(fp);
|
||
|
printf("Byte %i: %i %x\n",i, c[i], c[i]);
|
||
|
}
|
||
|
|
||
|
for (i = 0; i < 4; i++)
|
||
|
{
|
||
|
d[4-i-1] = c[i];
|
||
|
}
|
||
|
|
||
|
printf("Translated using swapping the bytes order: %i\n", qLe);
|
||
|
qLe = ntohl(qBe);
|
||
|
printf("Translated using ntohl: %i\n", qLe);
|
||
|
fclose(fp);
|
||
|
}
|
||
|
int main (int argc, char** argv){
|
||
|
unsigned int wantToRead;
|
||
|
writeToFile();
|
||
|
printf("Sizeof (int) is:%li\n", sizeof(unsigned int));
|
||
|
readFromFile();
|
||
|
|
||
|
return 0;
|
||
|
}
|