Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ TryWrite()

static bool System.Net.Http.VariableLengthIntegerHelper.TryWrite ( Span< byte > buffer,
long longToEncode,
out int bytesWritten )
inlinestatic

Definition at line 55 of file VariableLengthIntegerHelper.cs.

56 {
57 if (longToEncode < 63)
58 {
59 if (buffer.Length != 0)
60 {
61 buffer[0] = (byte)longToEncode;
62 bytesWritten = 1;
63 return true;
64 }
65 }
66 else if (longToEncode < 16383)
67 {
68 if (BinaryPrimitives.TryWriteUInt16BigEndian(buffer, (ushort)((uint)(int)longToEncode | 0x4000u)))
69 {
70 bytesWritten = 2;
71 return true;
72 }
73 }
74 else if (longToEncode < 1073741823)
75 {
76 if (BinaryPrimitives.TryWriteUInt32BigEndian(buffer, (uint)(int)longToEncode | 0x80000000u))
77 {
78 bytesWritten = 4;
79 return true;
80 }
81 }
82 else if (BinaryPrimitives.TryWriteUInt64BigEndian(buffer, (ulong)longToEncode | 0xC000000000000000uL))
83 {
84 bytesWritten = 8;
85 return true;
86 }
87 bytesWritten = 0;
88 return false;
89 }
static bool TryWriteUInt32BigEndian(Span< byte > destination, uint value)
static bool TryWriteUInt64BigEndian(Span< byte > destination, ulong value)
static bool TryWriteUInt16BigEndian(Span< byte > destination, ushort value)

References System.buffer, System.Buffers.Binary.BinaryPrimitives.TryWriteUInt16BigEndian(), System.Buffers.Binary.BinaryPrimitives.TryWriteUInt32BigEndian(), and System.Buffers.Binary.BinaryPrimitives.TryWriteUInt64BigEndian().

Referenced by System.Net.Http.Http3Frame.TryWriteFrameEnvelope(), and System.Net.Http.VariableLengthIntegerHelper.WriteInteger().