Я хотел бы сохранить цвет [] в файл. Для этого я обнаружил, что сохранение байтового массива в файл с использованием «System.IO.File.WriteAllBytes» должно быть очень эффективным.C# - Передача байтового массива в массив struct и наоборот (0)
Я хотел бы, чтобы бросить мой цвет [] (массив структуры) в массив байтов в безопасный способ с учетом:
- Потенциальная проблема мало Endian/большой Endian (я думаю, что это невозможно случиться но хочу быть уверенным)
- Имея 2 разных указателя на ту же память, которые указывают на другой тип. Собирает ли сбор мусора, что делать - движущиеся объекты - удаление указателя ???
Если возможно, было бы неплохо иметь общий способ передачи массива байтов в массив любой структуры (Т-структуры) и наоборот.
Если это невозможно, то почему?
Спасибо, Эрик
Я думаю, что эти 2 решения сделать копию, что я хотел бы избежать, а также они оба используют Marshal.PtrToStructure, который специфичен для структурирования и не массив структуры:
- Reading a C/C++ data structure in C# from a byte array
- How to convert a structure to a byte array in C#?
Это единственная причина, по которой вы хотите использовать 'byte []', чтобы иметь возможность вызывать 'WriteAllBytes'? Для этого существуют другие «более безопасные» методы, такие как использование «BinaryWriter» или «BinaryFormatter». – nicholas
Сегодня я столкнулся с статьей, в которой описывается способ делать то, что вы хотели первоначально, но это связано с наличием смешанного языка: сочетание C# и C++/CLI: http://www.codeproject.com/Articles/33713/ Generic-BinaryReader-and-BinaryWriter-Extensions – nicholas
Спасибо. Я быстро посмотрел, но я немного беспокоюсь об этом. Кажется, он делает копию, чего я хотел избежать. Кроме того, чтобы работать с перечислением как бит, мы можем использовать атрибут «Флаги». Используя поток C#, я думаю, что мы имеем о тех же результатах, не смешивая 2 разных языка. Но большое спасибо, я буду помнить об этом и вернусь сюда, если у меня возникнут другие проблемы преобразования байтов. –