У вас будут разные варианты, в зависимости от того, какой «Массив» вы используете. Это Array, List <> или ArrayList?
Для List <> вы можете использовать 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 для преобразования каждого бита в набор байтов, но вы сами должны разработать алгоритм преобразования ваших массивов в массив из одного байта и обратно.