Write
Write у
BinaryWriter
имеет перегрузки для int, bool,
double, string и byte[].
Целые - little-endian: Write(1) даёт
байты 1, 0, 0, 0.
Write(string) пишет длину в 7-bit,
затем UTF-8. Write(byte[]) - сырые
байты без префикса длины.
Синтаксис
writer.Write(1);
writer.Write("abcde");
writer.Write(byteArray);
Пример
Давайте записать int 1 и проверить байты:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
MemoryStream ms = new MemoryStream();
BinaryWriter writer = new BinaryWriter(
ms, Encoding.UTF8, leaveOpen: true);
writer.Write(1);
byte[] data = ms.ToArray();
Console.WriteLine(data[0]);
Console.WriteLine(data[1]);
Console.WriteLine(data[2]);
Console.WriteLine(data[3]);
writer.Dispose();
ms.Dispose();
}
}
Результат выполнения кода:
1
0
0
0
Пример
Давайте сравнить строку и массив байт:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
MemoryStream ms = new MemoryStream();
BinaryWriter writer = new BinaryWriter(
ms, Encoding.UTF8, leaveOpen: true);
writer.Write("abcde");
byte firstString = ms.ToArray()[0];
ms.SetLength(0);
writer.Write(new byte[] { 1, 2, 3, 4, 5 });
byte firstArray = ms.ToArray()[0];
Console.WriteLine(firstString);
Console.WriteLine(firstArray);
writer.Dispose();
ms.Dispose();
}
}
Результат выполнения кода:
5
1
Пример
Давайте прочитать массив через
ReadBytes:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
MemoryStream ms = new MemoryStream();
BinaryWriter writer = new BinaryWriter(
ms, Encoding.UTF8, leaveOpen: true);
writer.Write(new byte[] { 1, 2, 3, 4, 5 });
ms.Position = 0;
BinaryReader reader = new BinaryReader(
ms, Encoding.UTF8, leaveOpen: true);
byte[] res = reader.ReadBytes(3);
Console.WriteLine(res.Length);
reader.Dispose();
writer.Dispose();
ms.Dispose();
}
}
Результат выполнения кода:
3
Смотрите также
-
ReadString,
чтение строки с длиной -
ReadInt32,
чтениеintlittle-endian -
Stream,
общий поток байтов -
MemoryStream,
буфер для проверки