Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 10

Преобразование значение указателя

18.10.2021, 19:06. Показов 3236. Ответов 21

Студворк — интернет-сервис помощи студентам
Всем привет!

Есть вот такая структура:
C++
1
2
3
4
5
6
7
struct Temp
{
   Temp* numb1;
   Temp* numb2;
   Temp* numb3;
   std::string data;
};
Мне необходимо получить все 4 параметра конкретного объекта структуры в виде двоичного кода.

То есть я должен преобразовать каким-то образом значения указателей numbX (имеющие 16-тиричный формат) в двоичный код и аналогично поступить со значением параметра data.

Вопросы:
1) Как сделать это без лишних преобразований (Temp* -> string -> char -> посимвольно переводить в двоичный код)?
2) Как записать значение типа string в массив char (чтобы дальше посимвольно перевести в двоичный)
3*) Как вообще сделать это проще всего? STL пользоваться можно в ограниченных пределах (не пользоваться средствами, которые решают данную задачу напрямую - а ля "bitset")

Задача стоит как "сериализация и десериализация массива структур".

P.S.: Обгуглил что мог. Везде говориться лишь о том, как преобразовать int/char, о других типах ни слова.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2021, 19:06
Ответы с готовыми решениями:

Преобразование кода без указателя в код с использованием указателя
Правильно ли выполнил? Исходный код без указателя #include <iostream> #include <cstdlib> #include <fstream> using...

Преобразование указателя в массив
Всем привет. Есть указатель с типом const u_char * , известно , что он указывает на N байт. Как преобразовать его в массив; Пробовал...

Преобразование указателя на C-массив
Добрый день. Есть функции:template<int N> constexpr void test1(const char (&string)) { // .... } constexpr void...

21
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
19.10.2021, 21:46
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SmallEvil Посмотреть сообщение
это еще как понимать ?
в программе - несут, в файле уже ничего не несут ? как обычный идентификатор объекта ???
Вы так мутно изъясняетесь, извините, что вас решительно сложно понимать. Вы закончите мысль, и напишите ее сразу, а не дополняйте короткими фразами по ходу дела.

Если вы предлагаете помимо указателей, еще сохранять собственные адреса каждого узла, а потом диспетчеризировать при загрузке эти связи, чтобы понять кто на кого указывает, есть ли циклы и т.д., то да, это будет работать, но это уж точно не проще, чем индекс.

Если же не сохранять собственные адреса, а только значения полей указателей, то понять по этим адресам ничего не получится, потому что порядок этих адресов относительно друг друга не определен, и значения указателей в самом родительском узле не обязательно будут иметь самые младшие или самые старшие адреса. Это вот ответ на вопрос
Цитата Сообщение от SmallEvil Посмотреть сообщение
это еще как понимать ?
Цитата Сообщение от SmallEvil Посмотреть сообщение
в программе - несут, в файле уже ничего не несут ?
И в программе не несут.

Вы выделили три раза память для трех узлов, никто не гарантирует, что между этими адресами будет какой-то порядок.
Вы порядок только определили расположением этих указателей в своей структуре, а сами адреса могут быть в каком угодно порядке относительно друг друга.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
19.10.2021, 23:45
Цитата Сообщение от DrOffset Посмотреть сообщение
Если вы предлагаете помимо указателей, еще сохранять собственные адреса каждого узла, а потом диспетчеризировать при загрузке эти связи, чтобы понять кто на кого указывает, есть ли циклы и т.д., то да, это будет работать, но это уж точно не проще, чем индекс.
DrOffset, извините, говоря про использования адресов как идентификаторов связей между узлами, я имел именно это.

Цитата Сообщение от DrOffset Посмотреть сообщение
И в программе не несут.
Вы выделили три раза память для трех узлов, никто не гарантирует, что между этими адресами будет какой-то порядок.
Порядок, имеется ввиду связь между узлами, по моему это тоже порядок (порядок следования узлов).
Еще раз извините за созданную мной путаницу.

Я привел вполне приемлемый формат файла для автора (схематический конечно).
(Число перед текстом, это его длина.)

Добавлено через 51 минуту
Цитата Сообщение от DrOffset Посмотреть сообщение
Если вы предлагаете помимо указателей, еще сохранять собственные адреса каждого узла, а потом диспетчеризировать при загрузке эти связи, чтобы понять кто на кого указывает, есть ли циклы и т.д., то да, это будет работать, но это уж точно не проще, чем индекс.
Данную автором темы структуру, можно рассматривать как некий граф.
Сама запись в файл и его загрузка в узлы, не чуть не сложнее работы с индексами (а может даже проще).
Потому как можно смело обходить граф, записывая его узлы линейно в файл.
При чтении из файла, загрузить все записи (создать узлы), пройтись по графу заменив "старые" адреса на актуальные (расставить "связи").
Но я так понимаю это выходит за пределы задачи, и никому не интересно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.10.2021, 23:45

Преобразование температуры с помощью указателя
#include <cmath> #include <iostream> using namespace std; void convert_temp(double *p); int main(){ double n; cout<<"введем...

Преобразование указателя void к указателю на структуру
Здравствуйте! Можете объяснить эти строки в программе? int cmp(const void* p1, const void* p2) { return...

Преобразование указателя из char в int и double
указатель sadr является типом char мне нужно перопределить его на типы на int и double int a; double b; void cr(char **sadr) { ...

Преобразование указателя одного типа в указатель другого
Помоги пожалуйста составить программу: Преобразовать указатель одного типа в указатель другого.

Проверить правильность преобразования указателя - преобразование из void*
Есть один абстрактний и один не абстрактний клас. В виртуальний метод передаеться указатель на void. Можно как-то проверить правильность...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru