Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   txt -> hex (http://forum.oszone.net/showthread.php?t=174434)

dkrasny 29-04-2010 17:34 1403507

txt -> hex
 
Есть текстовый файл с хекс-дампом hex.txt, например такой
.....
E3A00000E5810000E59F15A4E5810000E59F15A0E5810000E59F159CE5810000
E59F1598E3E00000E5810000E59F1590E5810000E59F058CE3A01000E5801000
E59F0584E3A01010E5801000E3A00000EE070F17EE080F17EE110F10E3C00C23
......
Как его (или чем) преобразовать к виду (hex.hex):
......
0000 E3 A0 00 00 E5 81 00 00 E5 9F 15 A4 E5 81 00 00
0010 E5 9F 15 A0 E5 81 00 00 E5 9F 15 9C E5 81 00 00
0020 E5 9F 15 98 E3 E0 00 00 E5 81 00 00 E5 9F 15 90
0030 E5 81 00 00 E5 9F 05 8C E3 A0 10 00 E5 80 10 00
0040 E5 9F 05 84 E3 A0 10 10 E5 80 10 00 E3 A0 00 00
0050 EE 07 0F 17 EE 08 0F 17 EE 11 0F 10 E3 C0 0C 23
......
чтобы всё это можно было влить, например, в eeprom, скажем с помощью icprog
то есть не тупо преобразовать каждый символ (e, 3, a, 0...), а каждые 2 символа в байт (e3h, a0h,...)

pva 02-05-2010 00:17 1404956

какие средства тебе доступны? Пример на C++:
Код:

// to_binary.exe:
// to_binary <input.txt >output.bin
int from_hex(char ch)
{
  if ('0' <= ch)
  {
    if (ch <='9') return ch - '0';
    if ('A' <= ch)
    {
      if (ch <='F') return ch - 'A' + 10;
      if ('a' <= ch)
      {
        if (ch <='f') return ch - 'a' + 10;
      }
    }
  }

  return 0;
}

int main()
{
  char hi, lo;

  if (cout.rdbuf())
  {
    while(cin >> hi >> lo) cout.rdbuf()->sputc((from_hex(hi)<<4) | from_hex(lo));
  } 
}

переведёт текст в двоичный код

SimSim 02-05-2010 00:41 1404974

Кодовик
Free Hex Editor Neo


Время: 01:18.

Время: 01:18.
© OSzone.net 2001-