从十六进制值

问题描述:

这里拉个体整数值是我的十六进制代码:从十六进制值

42 4D C6 00 00 00 00 00 00 00 76 00 00 00 28 00 
00 00 0A 00 00 00 0A 00 00 00 01 00 04 00 00 00 
00 00 50 00 00 00 12 0B 00 00 12 0B 00 00 10 00 
00 00 10 00 00 00 FF 00 00 00 00 FF 00 00 00 00 
42 00 5A 5A 84 00 00 00 FF 00 FF 00 FF 00 00 FF 
FF 00 08 FF FF 00 5A FF FF 00 FF FF FF 00 FF FF 
FF 00 FF FF FF 00 FF FF FF 00 FF FF FF 00 FF FF 
FF 00 FF FF FF 00 92 59 00 16 47 00 00 00 25 90 
01 64 61 00 00 00 59 90 11 64 61 00 00 00 99 00 
16 48 11 00 00 00 90 01 64 61 11 00 00 00 00 16 
64 61 00 00 00 00 01 16 46 10 09 00 00 00 11 64 
41 00 99 00 00 00 16 64 11 09 95 00 00 00 66 48 
10 09 53 00 00 00 

我知道像素“分配”的第一行是开始(10个像素宽):

92 59 00 16 47 00 00 00 

我需要计算图像中每种颜色的次数,但我无法取得单个整数值(即:只有9,然后是2,然后是5,等等)。我能拉的唯一值是“92”,那么“59”,然后“00” ......

这是我该段代码(偏移量118和剩余合计十六进制值80):

int nbr_each[NBRCOLOURS]; 
    int ch, pixel; 

      fseek(fptr, 118, SEEK_SET); 
      for (count = 0; count < 81; count++) 
      { 
       pixel = fgetc(fptr); 
       nbr_each[pixel] = nbr_each[pixel] + 1; 
      } 
+0

好运解决问题 –

+0

一个整数有多少位? – tkausl

+0

我不知道。不知道如何找出。 – Carl

fgetc会给你个别的字符。

first = fgetc(fptr); // '9' 
second = fgetc(fptr); // '2' 
space = fgetc(fptr); // ' ' 

然后通过关闭减去每一个数字转换为数字0..9 '0':

first -= '0'; 
second -= '0'; 

然后再以数每个数字,像这样:

nbr_each[first]++; 
nbr_each[second]++;