Форум программистов, компьютерный форум CyberForum.ru

Hex-dump - C++

Восстановить пароль Регистрация
 
Jen948
7 / 7 / 0
Регистрация: 27.10.2013
Сообщений: 207
18.11.2013, 19:55     Hex-dump #1
Имеется программа для получения HEX-дампа входной строки.
Нужно расшифровать ее обратно в текст.

Есть ли готовые реализации этого на С/С++ ?
Или инструкция по созданию.

Искал - не нашел...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <windows.h>
#include <stdio.h>
#include <conio.h>
// Number of hex values displayed per line
 
#define HEX_DUMP_WIDTH 16
 
//
// Dump a region of memory in a hexadecimal format
//
#ifdef __cplusplus
   extern "C"
#endif
 
    __declspec(dllexport)
 
 
void HexDump(PBYTE ptr, DWORD length, char  *str)
{
    char buffer[256];
    PSTR buffPtr, buffPtr2;
    unsigned cOutput, i;
    DWORD bytesToGo=length;
 
 int eye = 0; //пишет не на экран, а в *str
 
    while (bytesToGo)
    {
        cOutput = bytesToGo >= HEX_DUMP_WIDTH ? HEX_DUMP_WIDTH : bytesToGo;
 
        buffPtr = buffer;
        buffPtr += sprintf(buffPtr, "%08X:  ", length-bytesToGo );
        buffPtr2 = buffPtr + (HEX_DUMP_WIDTH * 3) + 1;
        
        for ( i=0; i < HEX_DUMP_WIDTH; i++ )
        {
            BYTE value = *(ptr+i);
 
            if ( i >= cOutput )
            {
                // On last line.  Pad with spaces
                *buffPtr++ = ' ';
                *buffPtr++ = ' ';
                *buffPtr++ = ' ';
            }
            else
            {
                if ( value < 0x10 )
                {
                    *buffPtr++ = '0';
                    itoa( value, buffPtr++, 16);
                }
                else
                {
                    itoa( value, buffPtr, 16);
                    buffPtr+=2;
                }
 
                *buffPtr++ = ' ';
                *buffPtr2++ = isprint(value) ? value : '.';
 
            }
    //----------------------------------------------------------
   // Копруем хекс дамп в выходную строку
    str[eye] = *(buffPtr - 3);
    str[eye + 1] = *(buffPtr - 2);
    str[eye + 2] = ' ';
    eye += 3;
    //-----------------------------------------------------------
 
            
            // Put an extra space between the 1st and 2nd half of the bytes
            // on each line.
            if ( i == (HEX_DUMP_WIDTH/2)-1 )
                *buffPtr++ = ' ';
        }
 
        *buffPtr2 = 0;  // Null terminate it.
        
  
  // ЗДЕСЬ МОЖНО ВЫВЕСТИ ВСЁ НА ЭКРАН. РАСКОМЕНТИРУЙТЕ ЭТОТ КУСОК КОДА И ПОСМОТРИТЕ НА ЭКРАН !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  puts(buffer);   // Can't use printf(), since there may be a '%'
                        // in the string.
  
    
  
        bytesToGo -= cOutput;
        ptr += HEX_DUMP_WIDTH;
 
    }
 str[eye] = '\0';
}
 
 
int main()
 
{
 
    char a[500];
 
    char b[500];
 
    PBYTE PB;
 
    PB = (PBYTE)a;
 
    gets(a);
 
    HexDump(PB, 100, b);
    getch();
 
    return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2013, 19:55     Hex-dump
Посмотрите здесь:

[BMP] HEX (из HEX-редактора) в DEC C++
C++ std::ios::hex или std::ios.hex
string в hex C++
C++ hex редактор на с++
C++ hex редактор
Std::count << std::hex << (long) 0x0a; Как сделать, чтоб от HEX значения ноль при выводе не убирался? C++
Если HEX одного файла заменить на HEX другого, то изменится ли файл и будет ли работоспособным? C++
C++ Core dump после вызова system()

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 18:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru