У вас будут разные варианты, в зависимости от того, какой тип «Массив» вы используете. Является ли это массивом, списком <> или ArrayList?
Для получения списка <> вы можете использовать CopyTo()
, чтобы захватить части вашего списка и поместить их в двоичный массив, который вы могли бы затем написать с помощью XmlWriter. Чтобы прочитать их из XmlReader, вы можете просто использовать InsertRange
для де-сериализации данных.
считывающим Пример:
// elsewhere
List<byte> bytes;
// in the deserialization
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int index = 0;
int numRead = -1;
while (numRead != 0) // actually read stuff
{
numRead = reader.ReadContentAsBase64(buffer, bufferSize);
if (numRead > 0)
{
bytes.CopyTo(buffer, index, numRead);
index += numRead;
}
}
Примечание: выше код не проверяется, но, вероятно, близко. Вы можете сделать что-то подобное, но наоборот, для кодирования и записи данных на base64. Для других типов вам просто нужно преобразовать массив в список байтов.
Чтобы получить другие типы, кроме байтов, в массив байтов, вам нужно будет использовать System.BitConverter
. У этого есть два метода, которые сделают вас очень счастливыми: GetBytes
, который преобразует любой базовый тип данных в массив байтов и ToXxx
, который включает в себя ToInt32
и ToBoolean
. Вы будете нести ответственность за это преобразование самостоятельно после того, как прочитаете в базе данных base64 или перед тем, как будете писать.
Вы можете использовать BitConverter для преобразования каждого бит в набор байтов, но вам решать, как разработать алгоритм преобразования ваших массивов в один байт-массив и обратно.
Это System.Array, например byte [] или int [,]. Что вы подразумеваете под «двоичным массивом»? Как мне написать это с помощью XmlWriter? –
См. Обновленный пример. :) –
Ах, 'числовые или булевы типы'. Затем вам нужно будет преобразовать это в какой-то байт-массив, прежде чем вы его запишите. –