Перевод Ansi в Hex - C (СИ)
Формулировка задачи:
Добрый день! Мне нужно считать содержимое .com файла и перевести его в Hex(Причем желательно чтобы он был записан в строку, т.е. FF это не какое-либо число, а char a[2])
Я написал кусок, считывающий информацию из файла и получил массив, состоящий из ANSI символов( ♂▬ō♥☻♣♠ȫ♦ и т.п.). Как мне теперь перевести это в HEX? Вот что пока есть:
Спасибо.
#include <stdlib.h>
#include<stdio.h>
#include<conio.h>
#define BSIZE 500
int main(){
char buf[BSIZE];
int a;
char i;
FILE *in;
a=0;
in=fopen("i.com","r");
while((i=getc(in))!=EOF){buf[a]=i; a+=1;}
fclose(in);
return (0);}
Так, дополнив код функцией
sprintf(buf1,"%X",buf[n]);
получил то, что нужно, но теперь в буфер записывается код в неудобном формате, мне нужно, чтобы выводило в формате 1 байта(например 03 21 CA) а он выводит в странном формате ( соответственно 3 21 FFFFFFCA) кто что посоветует?
Решение задачи: «Перевод Ansi в Hex»
textual
Листинг программы
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *ifp;
int c;
if (argc != 2) {
fprintf(stderr, "usage: %s file\n", argv[0]);
return 1;
}
if ((ifp = fopen(argv[1], "rb")) == NULL) {
fprintf(stderr, "%s: error: can't open file\n", argv[0]);
return 2;
}
while ((c = getc(ifp)) != EOF)
printf(" %.2X", c);
putchar('\n');
if (ferror(ifp)) {
fprintf(stderr, "%s: error: input file is corrupted\n", argv[0]);
return 2;
}
fclose(ifp);
return 0;
}
Объяснение кода листинга программы
В этом коде представлена программа, которая считывает файл Ansi и выводит его содержимое в шестнадцатеричной системе счисления. Вот список действий, выполняемых в коде:
- Включаются стандартные заголовочные файлы, необходимые для работы с файлами и вывода сообщений об ошибках.
- Создается функция main(), которая является точкой входа в программу.
- Проверяется корректность аргументов командной строки. Если введенных аргументов менее двух, выводится сообщение об ошибке.
- Открывается файл для чтения в бинарном режиме. Если файл не может быть открыт, выводится сообщение об ошибке и программа завершается.
- В цикле считывается каждый символ из файла, и его значение выводится в шестнадцатеричной системе счисления.
- Проверяется наличие ошибок при чтении файла. Если обнаружена ошибка, выводится сообщение об ошибке и программа завершается.
- Файл закрывается.
- Возвращается 0, указывающий на успешное выполнение программы.