Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / положить в массив байт данные и получить их обратно / 3 сообщений из 3, страница 1 из 1
15.02.2015, 11:20
    #38880032
cpp2015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
положить в массив байт данные и получить их обратно
Добрый день.
Не хочу городить огород, лучше сразу спрошу у более опытных людей, как лучше сделать.
Делаю межпроцессное взаимодействие через Memory Mapping File. Допустим проецировали файл в память размером 128 байт. Получили ссылку на адрес памяти:
Код: plaintext
1.
LPVOID lpFileMap


Вопрос 1.
Как лучше побайтно работать с этим файлом в памяти, чтобы можно было обратиться к любому байту этого файла ?
Я пока придумал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
// объявляем временный массив байт
unsigned char bytearray[128];
// копируем в него файл из памяти
CopyMemory(bytearray, lpFileMap, 128);
// работаем с данными в массиве
......bytearray[10] = .......
// закидываем результат обратно в память
CopyMemory(lpFileMap, bytearray, 128);


Так правильно ? Или можно как-то лучше, без создания промежуточного массива ?

Ну и 2-й главный вопрос.
Как лучше всего уложить в эти 128 байт файла в памяти разнообразную информацию и потом считать её оттуда.
Например, нужно в первые 4 байта положить число int. Далее с 5-го по 12 байты (8 байт) уложить число double, затем, например, с 13 по 33 байты уложить строку Unicode типа wstring. Ну и затем всё это прочитать обратно.

Буду признателен, если кто-то напишет пример.
...
Рейтинг: 0 / 0
15.02.2015, 11:23
    #38880034
cpp2015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
положить в массив байт данные и получить их обратно
В идеале бы конечно записать и считать из файла структуру struct с нужными полями. Но другой процесс написан на c#. Поймут ли они друг друга с этими структурами.
...
Рейтинг: 0 / 0
15.02.2015, 11:31
    #38880041
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
положить в массив байт данные и получить их обратно
нахрен не нужен никакой массив вспомогательный
MapViewOfFile возвращает просто адрес, его можно трактовать как адрес структуры

cpp2015Но другой процесс написан на c#
а там копируют штатным образом, обращаясь к мемори мэппед файлу как к потоку
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / положить в массив байт данные и получить их обратно / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]