public static void WriteLengthEncodedString(this ByteBufferWriter writer, string value) { var byteCount = Encoding.UTF8.GetByteCount(value); writer.WriteLengthEncodedInteger((ulong)byteCount); writer.Write(value); }
public static void WriteLengthEncodedString(this ByteBufferWriter writer, ReadOnlySpan <char> value) { var byteCount = Encoding.UTF8.GetByteCount(value); writer.WriteLengthEncodedInteger((ulong)byteCount); writer.Write(value, flush: true); }
public static void WriteLengthEncodedInteger(this ByteBufferWriter writer, ulong value) { if (value < 251) { writer.Write((byte)value); } else if (value < 65536) { writer.Write((byte)0xfc); writer.Write((ushort)value); } else if (value < 16777216) { writer.Write((byte)0xfd); writer.Write((byte)(value & 0xFF)); writer.Write((byte)((value >> 8) & 0xFF)); writer.Write((byte)((value >> 16) & 0xFF)); } else { writer.Write((byte)0xfe); writer.Write(value); } }
public static void WriteLengthEncodedInteger(this ByteBufferWriter writer, ulong value) { switch (value) { case < 251: writer.Write((byte)value); break; case < 65536: writer.Write((byte)0xfc); writer.Write((ushort)value); break; case < 16777216: writer.Write((uint)((value << 8) | 0xfd)); break; default: writer.Write((byte)0xfe); writer.Write(value); break; } }
public static void WriteNullTerminatedString(this ByteBufferWriter writer, string value) { writer.Write(value); writer.Write((byte)0); }