Задать вопрос
@a63826ndrew
Студент, новичок в Python

Как преобразовать список в массив байт и обратно?

Здравствуйте!
Есть вот такой вот список, который создается при взятии таблицы из базы данных:
List<string[]> data = new List<string[]>();
                                while(reader.Read())
                                {
                                    data.Add(new string[4]);

                                    data[data.Count - 1][0] = reader[0].ToString();
                                    data[data.Count - 1][1] = reader[1].ToString();
                                    data[data.Count - 1][2] = reader[2].ToString();
                                    data[data.Count - 1][3] = reader[3].ToString();
                                }

И имеется необходимость преобразовать этот список в массив байт для записи в NetworkStream stream, а также обратное преобразование из массива байт в список. Как это можно реализовать?
  • Вопрос задан
  • 248 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
@d-stream
Готовые решения - не подаю, но...
Думаю, что стоит почитать про сериализацию. Потом про бинарную сериализацию например с помощью google protobuf
Ответ написан
Комментировать
@rPman
Этот процесс называется сериализация и десериализация. Есть бинарные и текстовые (xml/json/...). Формат определяете вы или берите готовый (.net предлагает штатные сериализаторы - BinaryFormater, гуглите, stackoverflow дает готовые примеры). К сожалению главный недостаток штатного сериализатора - стоит измениться версии компилятора и совместимость разваливается (текстовые само собой не так часто), хз зачем и почему так сделали, вполне возможно что если покопаться можно поддерживать разные версии в пределах одного приложения, но это достаточно глупо.

Весь мир аккуратно переходит на google protobuf, реализация которого есть под все популярные языки и с пяток непопулярных, пользуйтесь лучше им.
Ответ написан
Комментировать
Кроме бинарный форматов, типа BinaryFormatter (который я рекомендую не использовать) и protobuf есть ещё более простой бинарный формат - MsgPack
Ну и не забываем про то что любой текстовый формат можно назвать и бинарным. Достаточно просто взять Encoding.UTF8.ToByteArray или типа того.
Ответ написан
Комментировать
Griboks
@Griboks Куратор тега C#
Как уже написали, изучите бинарную сериализацию. Также важно обратить внимание, что бинарная десериализация, например через BinaryFormatter, без валидации является источником ошибок и дыр в безопасности.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы