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

C++

Войти
Регистрация
Восстановить пароль
 
karat39
4 / 4 / 1
Регистрация: 09.02.2016
Сообщений: 74
#1

Вывод данных в HEX по указателю - C++

21.05.2016, 18:01. Просмотров 186. Ответов 1
Метки нет (Все метки)

Скрывать не буду, совсем не силен в указателях в c++. Путаюсь сильно со звездочками.
Исходные данные:

Имею структуру (названия все поменял):

C++
1
2
3
4
5
6
7
8
struct message {
    char    field1[5];
    char    delimiter1[1];
    char    field2[5];
    char    delimiter2[1];
};
 
message *my_message;
заполняю ее, например вот так:
C++
1
2
3
4
5
my_message = new message;
memcpy(my_message->field1, FIELD1_VALUE, FIELD1_VALUE_SIZE);
memcpy(my_message->delimiter1, ";", 1);
memcpy(my_message->field2, FIELD2_VALUE_SIZE);
memcpy(my_message->delimiter2, ";", 1);
принтую ее:
C++
1
printf ("\n!%s!\n",my_message);
Выводит не все. Только часть. Ну мало ли, думаю, возможно где то завершающий ноль в памяти застрял.
Пытаюсь вывести побайтно. И вот тут у меня проблема. Как в таком случае правильно вывести?
Преположим, что строка у меня начинается с "8=4"
Как пытался:
C++
1
for (int i = 0; i < 10; i++) { printf ("%X ", *(my_message + i));}
Результат:
4050BF 0 0 0 0 0 0 0 0 0

C++
1
for (int i = 0; i < 10; i++) { printf ("%c ", (char *)(my_message + i));}
Результат:
полная ерунда

Пытался еще по другому, но даже стыдно писать как.

Вообщем застопорился, как правильно обратиться к значению в памяти. Буду признателен, за совет.

ps. Отдельно поля структуры вывожу - все нормально.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2016, 18:01     Вывод данных в HEX по указателю
Посмотрите здесь:
C++ Вывод адреса по указателю на char в std::cout
C++ Шестнадцатеричный вывод WORD и DWORD в поток без приведения к указателю
C++ Builder Вывод hex чисел в Memo
Вывод строки в виде hex-последовательности C++
C++ Builder ColorDialog, ColorSelect, вывод hex кода в Edit
Перевод данных в hex. C++
Если HEX одного файла заменить на HEX другого, то изменится ли файл и будет ли работоспособным? C++
C++ Контрол для просмотра данных в HEX
[BMP] HEX (из HEX-редактора) в DEC C++
Чтение из реестра бинарных данных в HEX виде. C++ Builder
C++ Builder C++ Builder 6.0 - преобразование hex данных с компорта в вещественное число двойной точности
Std::count << std::hex << (long) 0x0a; Как сделать, чтоб от HEX значения ноль при выводе не убирался? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
Эксперт C
15661 / 9988 / 1499
Регистрация: 24.12.2010
Сообщений: 18,763
21.05.2016, 19:19     Вывод данных в HEX по указателю #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char sym16(unsigned int c)
{
   if (c <= 9) return '0' +c;
   else if (c < 16) return 'a' + c - 10;
   else return 1;  // Кракозябр
}
void Dump(char *mem, int n)
{  
  for(int i=0; i<n; i++) {
    printf("%c%c ", sym16(m[i] >>4), sym16(m[i]&7));
    if (i%16 == 0) printf("\n");
  }
}
main()
{
  ....
  Dump((char *)my_message, sizeof(message));
 ...
}
Yandex
Объявления
21.05.2016, 19:19     Вывод данных в HEX по указателю
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru