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

◆ TryFormatUInt32()

static bool System.Number.TryFormatUInt32 ( uint value,
ReadOnlySpan< char > format,
IFormatProvider provider,
Span< char > destination,
out int charsWritten )
inlinestatic

Definition at line 2014 of file Number.cs.

2015 {
2016 if (format.Length == 0)
2017 {
2018 return TryUInt32ToDecStr(value, -1, destination, out charsWritten);
2019 }
2020 return TryFormatUInt32Slow(value, format, provider, destination, out charsWritten);
2021 unsafe static bool TryFormatUInt32Slow(uint value, ReadOnlySpan<char> format, IFormatProvider provider, Span<char> destination, out int charsWritten)
2022 {
2023 int digits;
2024 char c = ParseFormatSpecifier(format, out digits);
2025 char c2 = (char)(c & 0xFFDFu);
2026 if ((c2 == 'G') ? (digits < 1) : (c2 == 'D'))
2027 {
2028 return TryUInt32ToDecStr(value, digits, destination, out charsWritten);
2029 }
2030 if (c2 == 'X')
2031 {
2032 return TryInt32ToHexStr((int)value, GetHexBase(c), digits, destination, out charsWritten);
2033 }
2034 NumberFormatInfo instance = NumberFormatInfo.GetInstance(provider);
2035 byte* digits2 = stackalloc byte[11];
2036 NumberBuffer number = new NumberBuffer(NumberBufferKind.Integer, digits2, 11);
2037 UInt32ToNumber(value, ref number);
2038 char* pointer = stackalloc char[32];
2039 ValueStringBuilder sb = new ValueStringBuilder(new Span<char>(pointer, 32));
2040 if (c != 0)
2041 {
2042 NumberToString(ref sb, ref number, c, digits, instance);
2043 }
2044 else
2045 {
2046 NumberToStringFormat(ref sb, ref number, format, instance);
2047 }
2048 return sb.TryCopyTo(destination, out charsWritten);
2049 }
2050 }
static NumberFormatInfo GetInstance(IFormatProvider? formatProvider)
static unsafe void UInt32ToNumber(uint value, ref NumberBuffer number)
Definition Number.cs:2345
static unsafe bool TryInt32ToHexStr(int value, char hexBase, int digits, Span< char > destination, out int charsWritten)
Definition Number.cs:2313
static unsafe bool TryUInt32ToDecStr(uint value, int digits, Span< char > destination, out int charsWritten)
Definition Number.cs:2420
static char ParseFormatSpecifier(ReadOnlySpan< char > format, out int digits)
Definition Number.cs:2657
static unsafe void NumberToStringFormat(ref ValueStringBuilder sb, ref NumberBuffer number, ReadOnlySpan< char > format, NumberFormatInfo info)
Definition Number.cs:2817
static char GetHexBase(char fmt)
Definition Number.cs:1877
static void NumberToString(ref ValueStringBuilder sb, ref NumberBuffer number, char format, int nMaxDigits, NumberFormatInfo info)
Definition Number.cs:2715
bool TryCopyTo(Span< char > destination, out int charsWritten)

References System.destination, System.format, System.Number.GetHexBase(), System.Globalization.NumberFormatInfo.GetInstance(), System.Number.NumberToString(), System.Number.NumberToStringFormat(), System.Number.ParseFormatSpecifier(), System.pointer, System.Text.ValueStringBuilder.TryCopyTo(), System.Number.TryInt32ToHexStr(), System.Number.TryUInt32ToDecStr(), System.Number.UInt32ToNumber(), and System.value.

Referenced by System.Byte.TryFormat(), System.UInt16.TryFormat(), and System.UInt32.TryFormat().