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

◆ ConvertToBase64Array()

static unsafe int System.Convert.ConvertToBase64Array ( char * outChars,
byte * inData,
int offset,
int length,
bool insertLineBreaks )
inlinestaticprivate

Definition at line 2827 of file Convert.cs.

2828 {
2829 int num = length % 3;
2830 int num2 = offset + (length - num);
2831 int num3 = 0;
2832 int num4 = 0;
2833 fixed (char* ptr = &base64Table[0])
2834 {
2835 int i;
2836 for (i = offset; i < num2; i += 3)
2837 {
2838 if (insertLineBreaks)
2839 {
2840 if (num4 == 76)
2841 {
2842 outChars[num3++] = '\r';
2843 outChars[num3++] = '\n';
2844 num4 = 0;
2845 }
2846 num4 += 4;
2847 }
2848 outChars[num3] = ptr[(inData[i] & 0xFC) >> 2];
2849 outChars[num3 + 1] = ptr[((inData[i] & 3) << 4) | ((inData[i + 1] & 0xF0) >> 4)];
2850 outChars[num3 + 2] = ptr[((inData[i + 1] & 0xF) << 2) | ((inData[i + 2] & 0xC0) >> 6)];
2851 outChars[num3 + 3] = ptr[inData[i + 2] & 0x3F];
2852 num3 += 4;
2853 }
2854 i = num2;
2855 if (insertLineBreaks && num != 0 && num4 == 76)
2856 {
2857 outChars[num3++] = '\r';
2858 outChars[num3++] = '\n';
2859 }
2860 switch (num)
2861 {
2862 case 2:
2863 outChars[num3] = ptr[(inData[i] & 0xFC) >> 2];
2864 outChars[num3 + 1] = ptr[((inData[i] & 3) << 4) | ((inData[i + 1] & 0xF0) >> 4)];
2865 outChars[num3 + 2] = ptr[(inData[i + 1] & 0xF) << 2];
2866 outChars[num3 + 3] = ptr[64];
2867 num3 += 4;
2868 break;
2869 case 1:
2870 outChars[num3] = ptr[(inData[i] & 0xFC) >> 2];
2871 outChars[num3 + 1] = ptr[(inData[i] & 3) << 4];
2872 outChars[num3 + 2] = ptr[64];
2873 outChars[num3 + 3] = ptr[64];
2874 num3 += 4;
2875 break;
2876 }
2877 }
2878 return num3;
2879 }
static readonly char[] base64Table
Definition Convert.cs:36

References System.Convert.base64Table, System.length, and System.offset.

Referenced by System.Convert.ToBase64CharArray(), System.Convert.ToBase64String(), and System.Convert.TryToBase64Chars().