166 {
167 Span<char> span = stackalloc char[66];
168 if (radix < 2 || radix > 36)
169 {
171 }
172 bool flag = false;
173 uint num;
174 if (n < 0)
175 {
176 flag = true;
177 num = (uint)((10 == radix) ? (-n) : n);
178 }
179 else
180 {
181 num = (uint)n;
182 }
183 if (((uint)flags & 0x40u) != 0)
184 {
185 num &= 0xFFu;
186 }
187 else if (((uint)flags & 0x80u) != 0)
188 {
189 num &= 0xFFFFu;
190 }
191 int num2;
192 if (num == 0)
193 {
194 span[0] = '0';
195 num2 = 1;
196 }
197 else
198 {
199 num2 = 0;
200 for (
int i = 0;
i < span.Length;
i++)
201 {
202 uint num3 = num / (uint)radix;
203 uint num4 = num - (uint)((int)num3 * radix);
204 num = num3;
205 span[
i] = ((num4 < 10) ? ((
char)(num4 + 48)) : ((char)(num4 + 97 - 10)));
206 if (num == 0)
207 {
209 break;
210 }
211 }
212 }
213 if (radix != 10 && ((uint)flags & 0x20u) != 0)
214 {
215 if (16 == radix)
216 {
217 span[num2++] = 'x';
218 span[num2++] = '0';
219 }
220 else if (8 == radix)
221 {
222 span[num2++] = '0';
223 }
224 }
225 if (10 == radix)
226 {
227 if (flag)
228 {
229 span[num2++] = '-';
230 }
231 else if (((uint)flags & 0x10u) != 0)
232 {
233 span[num2++] = '+';
234 }
235 else if (((uint)flags & 8u) != 0)
236 {
237 span[num2++] = ' ';
238 }
239 }
240 string text =
string.FastAllocateString(Math.Max(width, num2));
241 fixed (
char* ptr =
text)
242 {
243 char* ptr2 = ptr;
244 int num5 = text.Length - num2;
245 if (((uint)flags & (true ? 1u : 0u)) != 0)
246 {
247 for (int j = 0; j < num5; j++)
248 {
249 *(ptr2++) = paddingChar;
250 }
251 for (int k = 0; k < num2; k++)
252 {
253 *(ptr2++) = span[num2 - k - 1];
254 }
255 }
256 else
257 {
258 for (int l = 0; l < num2; l++)
259 {
260 *(ptr2++) = span[num2 - l - 1];
261 }
262 for (int m = 0; m < num5; m++)
263 {
264 *(ptr2++) = paddingChar;
265 }
266 }
267 }
269 }