38 : this(output,
Encoding.UTF8, leaveOpen: false)
43 : this(output, encoding, leaveOpen: false)
64 _useFastUtf8 = encoding.IsUTF8CodePage && encoding.EncoderFallback.MaxCharCount <= 1;
72 protected virtual void Dispose(
bool disposing)
136 [CLSCompliant(
false)]
165 int length = result.EncodeToUtf8(span);
171 if (maxByteCount > span.
Length)
224 decimal.GetBytes(in
value, span);
235 [CLSCompliant(
false)]
250 [CLSCompliant(
false)]
265 [CLSCompliant(
false)]
295 if (
value.Length <= 42)
299 span[0] = (byte)
bytes;
303 if (
value.Length <= 21845)
345 if (
chars.Length <= 65536)
348 if (maxByteCount <= 65536)
352 WriteToOutStream(
array, 0,
bytes, useThisWriteOverride);
362 encoder.
Convert(
chars,
array, flush:
true, out var charsUsed, out var bytesUsed, out completed);
365 WriteToOutStream(
array, 0, bytesUsed, useThisWriteOverride);
371 void WriteToOutStream(
byte[]
buffer,
int offset,
int count,
bool useThisWriteOverride)
373 if (useThisWriteOverride)
387 for (num = (uint)
value; num > 127; num >>= 7)
389 Write((
byte)(num | 0xFFFFFF80u));
397 for (num = (ulong)
value; num > 127; num >>= 7)
399 Write((
byte)((uint)(
int)num | 0xFFFFFF80u));
static ArrayPool< T > Shared
static void WriteUInt32LittleEndian(Span< byte > destination, uint value)
static void WriteInt32LittleEndian(Span< byte > destination, int value)
static void WriteUInt16LittleEndian(Span< byte > destination, ushort value)
static void WriteInt16LittleEndian(Span< byte > destination, short value)
static void WriteUInt64LittleEndian(Span< byte > destination, ulong value)
static void WriteHalfLittleEndian(Span< byte > destination, Half value)
static void WriteSingleLittleEndian(Span< byte > destination, float value)
static void WriteInt64LittleEndian(Span< byte > destination, long value)
static void WriteDoubleLittleEndian(Span< byte > destination, double value)
virtual void Write(char ch)
virtual void Write(byte value)
void Write7BitEncodedInt64(long value)
virtual void Write(sbyte value)
virtual void Write(float value)
virtual void Write(byte[] buffer, int index, int count)
void WriteCharsCommonWithoutLengthPrefix(ReadOnlySpan< char > chars, bool useThisWriteOverride)
virtual void Write(short value)
virtual void Write(char[] chars, int index, int count)
virtual void Write(uint value)
virtual ValueTask DisposeAsync()
BinaryWriter(Stream output, Encoding encoding, bool leaveOpen)
virtual void Dispose(bool disposing)
virtual void Write(double value)
static readonly BinaryWriter Null
virtual Stream BaseStream
BinaryWriter(Stream output)
virtual long Seek(int offset, SeekOrigin origin)
virtual void Write(char[] chars)
virtual void Write(ushort value)
virtual void Write(int value)
void Write7BitEncodedInt(int value)
virtual void Write(long value)
virtual void Write(byte[] buffer)
virtual void Write(ReadOnlySpan< char > chars)
readonly bool _useFastUtf8
readonly Encoding _encoding
virtual void Write(ulong value)
virtual void Write(Half value)
virtual void Write(ReadOnlySpan< byte > buffer)
virtual void Write(bool value)
BinaryWriter(Stream output, Encoding encoding)
virtual void Write(decimal value)
virtual void Write(string value)
long Seek(long offset, SeekOrigin origin)
void Write(byte[] buffer, int offset, int count)
virtual void WriteByte(byte value)
static readonly Stream Null
static string ArgumentOutOfRange_IndexCount
static string Argument_StreamNotWritable
static string Arg_SurrogatesNotAllowedAsSingleChar
static string ArgumentOutOfRange_NeedNonNegNum
virtual void Convert(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex, int byteCount, bool flush, out int charsUsed, out int bytesUsed, out bool completed)
virtual byte[] GetBytes(char[] chars)
int GetMaxByteCount(int charCount)
virtual Encoder GetEncoder()
virtual int GetByteCount(char[] chars)
Span< T > Slice(int start)
static bool TryCreate(char ch, out Rune result)
static ValueTask FromException(Exception exception)