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

◆ GetBytesWithFallback() [2/2]

unsafe override int System.Text.ASCIIEncoding.GetBytesWithFallback ( ReadOnlySpan< char > chars,
int originalCharsLength,
Span< byte > bytes,
int originalBytesLength,
EncoderNLS encoder )
inlinesealedprotectedvirtualinherited

Reimplemented from System.Text.Encoding.

Definition at line 215 of file ASCIIEncoding.cs.

216 {
217 if (((encoder == null) ? base.EncoderFallback : encoder.Fallback) is EncoderReplacementFallback { MaxCharCount: 1 } encoderReplacementFallback && encoderReplacementFallback.DefaultString[0] <= '\u007f')
218 {
219 byte b = (byte)encoderReplacementFallback.DefaultString[0];
220 int num = Math.Min(chars.Length, bytes.Length);
221 int num2 = 0;
222 fixed (char* ptr2 = &MemoryMarshal.GetReference(chars))
223 {
224 fixed (byte* ptr = &MemoryMarshal.GetReference(bytes))
225 {
226 while (num2 < num)
227 {
228 ptr[num2++] = b;
229 if (num2 < num)
230 {
231 num2 += (int)ASCIIUtility.NarrowUtf16ToAscii(ptr2 + num2, ptr + num2, (uint)(num - num2));
232 }
233 }
234 }
235 }
236 chars = chars.Slice(num);
237 bytes = bytes.Slice(num);
238 }
239 if (chars.IsEmpty)
240 {
241 return originalBytesLength - bytes.Length;
242 }
243 return base.GetBytesWithFallback(chars, originalCharsLength, bytes, originalBytesLength, encoder);
244 }

References System.bytes, System.chars, System.Text.EncoderReplacementFallback.DefaultString, System.Text.EncoderNLS.Fallback, System.Math.Min(), and System.Text.ASCIIUtility.NarrowUtf16ToAscii().

Referenced by System.Text.ASCIIEncoding.GetBytesCommon().