示例#1
0
        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);
        }
示例#3
0
 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;
            }
        }
示例#5
0
 public static void WriteNullTerminatedString(this ByteBufferWriter writer, string value)
 {
     writer.Write(value);
     writer.Write((byte)0);
 }