1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
1

Как записать в файл данные в hex формате?

18.07.2015, 06:51. Показов 4093. Ответов 6
Метки нет (Все метки)

Добрый день!

Не могу решить одну задачу...(
С СОМ порта идут данные в hex формате, т.е. число вместо "7272" приходит 4848...
Эти данные я записал в текстовый файл. Теперь это 7272 отображается в файле как HH...
Направьте на путь истинный - каким образом принять то, что передаётся...
Либо мне нужно записывать данные в hex файл, либо как-то преобразовать HH в 7272 ?...
Честное слово, не могу понять, что делать...
Вот одна строка из записанного текстового файла:
Вложения
Тип файла: txt test.txt (59 байт, 12 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2015, 06:51
Ответы с готовыми решениями:

Записать данные из буфера в типизированный файл , переведённые из string в Hex формат
Здравствуйте уважаемые форумчане ! Возникла необходимость , при написании программы которая,...

Записать в файл данные двух массивов в заданном формате
Уважаемые программисты нужно создать 2 массива, которые вмещали в себе в первом - имя студента, во...

Как записать MAC адрес в HEX файл?
Не знаю в каком разделе задать этот вопрос, поэтому спрошу здесь. Есть файл прошивки в котором уже...

Как правильно записать файл в текстовом формате?
Как правильно записать файл в текстовом формате в языке Си? помогите пожалуйста исправить?...

6
Фрилансер
3703 / 2075 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
18.07.2015, 07:51 2
Капитан Очевидность говорит, что записывать в файл нужно в том формате, какой Вам нужен для дальнейшего использования.

Вам нужно потом читать это файл? В текстовом виде? Значит, попробуйте писать, преобразуя каждый байт в строку.
Например, через IntToStr. Или через printf/fprintf/sprintf
1
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
18.07.2015, 08:20  [ТС] 3
Спасибо, что откликнулись!
Тут понимаете какая "беда" - приходится подстраиваться под то, что есть, т.е. доделывать ранее начатое другими людьми.
На данный момент я записываю данные, которые идут с СОМ порта в текстовый файл.
Данные идут в hex формате, поэтому в текстовом файле записаны всякие кракозябры... )
Так вот не могу понять как мне всё это преобразовать в нормальный вид?...
Чтобы HH выглядело как 7272...
0
3174 / 1933 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
18.07.2015, 08:58 4
Цитата Сообщение от INA007 Посмотреть сообщение
Чтобы HH выглядело как 7272
Читаете один байт ('HH') и выводите его же как десятичное целое ('72').

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main(int argc,char** argv)
{
   FILE*    pIn = fopen("test.txt","rb"); 
 
   int   iChr = 0;
   int   iCnt = 0;
 
   while ((iChr = fgetc(pIn)) != EOF)
   {
      printf("%03d ",iChr);
 
      if (!(++iCnt % 16))
      {
         printf("\n");
      }
   }
 
   fclose(pIn);
 
   return 0;
}
Миниатюры
Как записать в файл данные в hex формате?  
1
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
18.07.2015, 09:29  [ТС] 5
Спасибо и Вам!

Вы знаете, наверное я так запутался уже, что не понимаю простого...)
Я работаю в RDA Studio XE8 C++ Builder...
Записал всё это в таком виде:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::btnConvClick(TObject *Sender)
{
 
     FILE*    pIn = fopen("test.txt","rb");
 
   int   iChr = 0;
   int   iCnt = 0;
    if(!pIn) ShowMessage("Файл не открыт!");
   while ((iChr = fgetc(pIn)) != EOF)
   {
      printf("%03d ",iChr);
 
      if (!(++iCnt % 16))
      {
         printf("\n");
      }
   }
 
   fclose(pIn);
 
}
Но я не вижу результата...(
Вообще-то, мне хотелось бы записать преобразованные данные в другой файл, скажем test2.txt - это возможно?
0
3174 / 1933 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
18.07.2015, 09:43 6
Лучший ответ Сообщение было отмечено INA007 как решение

Решение

Цитата Сообщение от INA007 Посмотреть сообщение
не вижу результата
Плохо представляю, что такое Builder, но результат printf нужно смотреть в консоли. Либо поменяйте на fprintf и выводите в файл.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main(int argc,char** argv)
{
   FILE*    pIn  = fopen("test.txt","rb"); 
   FILE*    pOut = fopen("result.txt","wt"); 
 
   int   iChr = 0;
   int   iCnt = 0;
 
   while ((iChr = fgetc(pIn)) != EOF)
   {
      fprintf(pOut,"%03d ",iChr);
 
      if (!(++iCnt % 16))
      {
         fprintf(pOut,"\n");
      }
   }
 
   fclose(pIn);
   fclose(pOut);
 
   return 0;
}
Вложения
Тип файла: 7z result.txt.7z (203 байт, 4 просмотров)
1
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
18.07.2015, 10:21  [ТС] 7
Вот спасибо, Вам огромное!
Вы уж извините за глупые вопросы, но, честное слово, запутался совсем с этой задачей... )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2015, 10:21
Помогаю со студенческими работами здесь

Записать число в hex файл
Дано число вида 0x08000000, как мне объяснили если записывать его в бинарь то получится запись 4...

Файл: Как с помощью Python записать (а не перезаписать) данные из базы SQLite в файл lex.txt.
Помогите с разработкой части проекта, пожалуйста! Есть файл db.sqlite в котором таджикские слова:...

Записать в файл все числа от нуля до 2^16 в hex-виде
Здравствуйте, как записать все комбинации 2^16 (в hex-виде) в блокнот ?

Файл. Как записать данные?
Доброго времени суток... просьба помочь с программой. Програма вычисляет корень квадратный в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru