Я пытаюсь прочитать файл с окончанием конца файла и определить его шестнадцатеричные значения, если это файл PNG.Откройте файл png и прочитайте его шестнадцатеричные значения в C
До сих пор я пробовал по двум различным путям, но никто не работает.
- Сперва я читаю первые 16 символов, так как первые 8 шестнадцатеричных значений определяют, имеет ли он правый заголовок. Затем я пытаюсь разделить его и читать как шестнадцатеричное значение, как оно было представлено в каком-то другом разделе здесь.
- Другое, что я просто хочу прочитать первые два значения и определить, является ли это шестнадцатеричным значением, даже видеть, работает ли оно. Это не.
код:
int IS_PNG_FILE(char *name)
{
FILE *dat = fopen (name, "rt");
if (dat == NULL) return 1;
int data_point;
char buf[16], a[16];
fgets(buf, 16, dat);
printf("%s\n", buf);
int i, b;
for (i=0; i<16; i++)
{
sscanf(&buf[i], "%2x", &b);
a[i] = b;
i += 2;
}
printf("%d\n", a);
fscanf(dat, "%2x", &data_point);
printf("%d\n", data_point);
fclose(dat);
return 0;
}
'FOPEN (имя, "RT")'? try '" rb "' вместо –
Он по-прежнему просто возвращает максимальное число или -2. – Shenkey
PNG-файлы не являются текстовыми. Байты в них не являются шестнадцатеричными «строками» вообще, поэтому 'sscanf' не будет делать то, что вы думаете, и это не метод, который будет полезен. Вы уже прочитали первые 16 байт (хорошо) - вам нужно сравнить значение этих байтов в значении непосредственно с ожидаемыми вами числами. –