Как преобразовать объект в байтовый массив в C # - PullRequest
76 голосов
/ 18 сентября 2009

У меня есть коллекция объектов, которые мне нужно записать в двоичный файл.

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

Если я попытаюсь

byte[] myBytes = (byte[]) myObject 

Я получаю исключение во время выполнения.

Мне нужно, чтобы это было быстро, поэтому я бы не стал копировать массивы байтов. Я бы просто хотел, чтобы актерский состав byte[] myBytes = (byte[]) myObject работал!

Ладно, для ясности, у меня не может быть метаданных в выходном файле. Просто байты объекта. Упакованный объект-объект. Судя по полученным ответам, я буду писать низкоуровневый код Buffer.BlockCopy. Возможно использование небезопасного кода.

Ответы [ 11 ]

0 голосов
/ 19 сентября 2009

Если у вас есть только текст или что-то подобное для хранения, вы можете сделать что-то вроде:

byte[] byteArray = Encoding.ASCII.GetBytes(myObject.text);

В противном случае вам придется сериализовать более сложным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...