С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
53 / 7 / 1
Регистрация: 06.10.2020
Сообщений: 221
1

Как сделать преобразование любого типа данных в массив байтов и обратно

22.10.2022, 19:23. Показов 952. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я хочу сделать преобразование различных типов данных и классов в массив char и обратно. Как это можно реализовать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.10.2022, 19:23
Ответы с готовыми решениями:

Преобразование double в массив байтов и обратно
Преобразование double в массив байтов и обратно? Собственно как? в VC2003 было накручено так ...

Необходимо файл (любого расширения) записать в базу данных как массив байтов
Необходимо файл (любого расширения) записать в базу данных в byte форме. И затем взять его (выбрав...

Преобразование произвольных данных "типа значения" в строку и обратно
Требуется преобразовать данные "типа значения" (int, float и т.п.) в строку и обратно. В месте...

Перевод значения любого типа в string и обратно
есть панель и ее настройки которые я добываю таким образом: PropertyDescriptorCollection...

Как в БД Transbase засунуть массив байтов в ячейку типа blob?
Этот код я использую для редактирования данных в БД. Когда данные типа int или string все работает,...

7
Злостный нарушитель
9654 / 5235 / 1196
Регистрация: 12.03.2015
Сообщений: 24,680
22.10.2022, 21:09 2
А в чём проблема? И зачем это тебе понадобилось?
0
фрилансер
5856 / 5395 / 1104
Регистрация: 11.10.2019
Сообщений: 14,406
22.10.2022, 21:12 3
Aleksey_1024, json
0
53 / 7 / 1
Регистрация: 06.10.2020
Сообщений: 221
22.10.2022, 22:15  [ТС] 4
Verevkin, это для моей игры. Я хочу разные типы данных хранить в одном массиве. С реализацией хранения разных типов данных в одном массиве проблем не возникло, но я также хочу сохранять все эти данные в бинарном виде в один файл. Могу их сохранить в обычном виде, но мне это не очень нравится, из-за большого занимаемого места

Добавлено через 30 секунд
Алексей1153, А зачем там json?
0
фрилансер
5856 / 5395 / 1104
Регистрация: 11.10.2019
Сообщений: 14,406
22.10.2022, 22:45 5
Цитата Сообщение от Aleksey_1024 Посмотреть сообщение
А зачем там json
как зачем?

чтобы:
Цитата Сообщение от Aleksey_1024 Посмотреть сообщение
преобразование различных типов данных и классов в массив char и обратн
0
Злостный нарушитель
9654 / 5235 / 1196
Регистрация: 12.03.2015
Сообщений: 24,680
22.10.2022, 23:03 6
А в чём проблема? И зачем это тебе понадобилось?
Цитата Сообщение от Aleksey_1024 Посмотреть сообщение
но я также хочу сохранять все эти данные в бинарном виде в один файл.
Для этого их в массив перегонять не надо.
0
462 / 329 / 64
Регистрация: 09.03.2016
Сообщений: 3,249
22.10.2022, 23:47 7
А причём здесь эта хрень?
Принимает по проводам любой файл, побайтно.
Когда то писал... Есть ещё посылает, только оно ни кому не надо.



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
//---------------------- Получаем имя файла                     
            int part1 = 0, len1 = 0;
            sock->receive(boost::asio::buffer(&len1, sizeof(int)));// Получил длину имяни файла
            wchar_t *file_name = new wchar_t[len1 + 1]; memset(file_name, 0, (len1 * 2) + 2);// создал массив на куче
 
            wchar_t* last = file_name + len1;
            while (file_name < last){
                part1 = sock->receive(boost::asio::buffer(file_name, 1));// Другой сокет наверное надо sizeof(buffer)
                file_name += part1;// Реально полученные байты (инкремент указателя)
            }
            file_name -= len1;
            
//----------------------------------------- Работаем с блоком
                    size_t len(0);      short part(0);
            sock->receive(boost::asio::buffer(&len, sizeof(size_t)));// Получил длину блока
 
            _wfopen_s(&fp_out, file_name, L"wb");
            if (fp_out == 0)
            {// Открывает двоичный файл для чтения.
                //    http://www.c-cpp.ru/content/fopen        <-- (Notepad++ double click)
                std::cout << " file not open for Write  " << std::endl;
            }
            size_t count(0); _int8 buf_[1];
                    while (count < len){
                part = sock->receive(boost::asio::buffer(buf_, 1));// Другой сокет наверное надо sizeof(buffer)
                
                fwrite(buf_, 1, 1, fp_out);//<======== гоним данные в файл  
                
                count += part;// Реально полученные байты (инкремент указателя)
                                }
                    std::cout << " receive_data --->  " << len <<" bites" <<std::endl;
                    delete[] file_name;
                    fclose(fp_out);
            std::cout << " close_ok.\n"; break;
Добавлено через 1 минуту
using namespace boost::asio;
0
3719 / 2648 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
23.10.2022, 00:59 8
Цитата Сообщение от Aleksey_1024 Посмотреть сообщение
Я хочу сделать преобразование различных типов данных и классов в массив char и обратно. Как это можно реализовать?
Сериализацией.

Я сомневаюсь что у вас все простые типы, что бы записывать их прямо как область памяти.
К тому же не все данные нужно хранить.
В классах есть много служебных данных, которые не нужны для длительного хранения.
0
23.10.2022, 00:59
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2022, 00:59
Помогаю со студенческими работами здесь

Конвертация Bitmap 8 бит на пиксель в массив байтов и обратно
Здравствуйте! Помогите, пожалуйста, с программой, использующей Bitmap. Я пишу приложение,...

Как, в методе, принять массив любого типа
Задача: мне нужно написть метод, который мог бы принимать массив любого типа пример: public...

Как передавать в метод массив любого типа?
написал метод, аналог реверса встроенного для массивов. Как сделать его для массивов...

Преобразование типа данных: строка в массив double
Дана строка (массив char, последний элемент которго = 0), её длина кратна 8, представить данную...

Преобразование пользовательского типа в стандартный и обратно, перегрузка операторов
#ifndef INTEGER_H_ #define INTEGER_H_ class Integer{ public: Integer(int=0); ~Integer();...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru