#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
int main(int argc, char *argv[]) {
// ensure proper usage
if (argc != 2)
return 1;
// open file
 FILE *fp = fopen(argv[1], "r");
if (fp == NULL)
return 1;
// seek to BITMAPFILEHEADER's bfSize
 fseek(fp, 2, SEEK_SET);
// read in BITMAPFILEHEADER's bfSize
uint32_t bfSize;
fread(&bfSize, sizeof(bfSize), 1, fp);
// print bfSize
 printf("\nbfSize: %d\n\n", bfSize);
// return to start of file rewind(fp);
// read in BITMAPFILEHEADER's raw bytes
uint8_t *buffer = malloc(14);
fread(buffer, 1, 14, fp);
// print field via cast
 printf("bfSize: %d\n\n", *((uint32_t *) (buffer + 2)));
// print individual bytes in decimal
printf("bfSize: %d %d %d %d\n",buffer[2], buffer[3], buffer[4],
buffer[5]);
// print individual bytes in hexadecimal
 printf("bfSize: 0x%x 0x%x 0x%x 0x%x\n",buffer[2], buffer[3],
buffer[4], buffer[5]);
// print individual bytes in binary
 printf("bfSize: "); for (int i = 2; i < 6; i++) {

for (int j = 7; j >= 0; j--) {
int mask = 1 << j;
if (buffer[i] & mask)
else
printf("1");
printf("0");
}
printf("\n\n");
}




i did it for large.bmp   and it gace me output ::::



bfSize: 486

bfSize: 486

bfSize:   230   1   0   0
bfSize: 0xe6 0x1 0x0 0x0
bfSize: 11100110000000010000000000000000





but my QUESTION is   i did in terminal:

xxd -c 24 -g 3  large.bmp


and it gave me  ::

0000000: 424de6 010000 000000 003600 000028 000000 0c0000 00f4ff



HERE THE BFSIZE A/C TO ME IS  e6    and it's dec. value is   230
then why in 1st line it is giving output  486  .

-- 
You received this message because you are subscribed to the Google Groups 
"google-codejam" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-code?hl=en.

Reply via email to