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

◆ TryFormatUInt64()

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

Definition at line 2184 of file Number.cs.

2185 {
2186 if (format.Length == 0)
2187 {
2188 return TryUInt64ToDecStr(value, -1, destination, out charsWritten);
2189 }
2190 return TryFormatUInt64Slow(value, format, provider, destination, out charsWritten);
2191 unsafe static bool TryFormatUInt64Slow(ulong value, ReadOnlySpan<char> format, IFormatProvider provider, Span<char> destination, out int charsWritten)
2192 {
2193 int digits;
2194 char c = ParseFormatSpecifier(format, out digits);
2195 char c2 = (char)(c & 0xFFDFu);
2196 if ((c2 == 'G') ? (digits < 1) : (c2 == 'D'))
2197 {
2198 return TryUInt64ToDecStr(value, digits, destination, out charsWritten);
2199 }
2200 if (c2 == 'X')
2201 {
2202 return TryInt64ToHexStr((long)value, GetHexBase(c), digits, destination, out charsWritten);
2203 }
2204 NumberFormatInfo instance = NumberFormatInfo.GetInstance(provider);
2205 byte* digits2 = stackalloc byte[21];
2206 NumberBuffer number = new NumberBuffer(NumberBufferKind.Integer, digits2, 21);
2207 UInt64ToNumber(value, ref number);
2208 char* pointer = stackalloc char[32];
2209 ValueStringBuilder sb = new ValueStringBuilder(new Span<char>(pointer, 32));
2210 if (c != 0)
2211 {
2212 NumberToString(ref sb, ref number, c, digits, instance);
2213 }
2214 else
2215 {
2216 NumberToStringFormat(ref sb, ref number, format, instance);
2217 }
2218 return sb.TryCopyTo(destination, out charsWritten);
2219 }
2220 }
static NumberFormatInfo GetInstance(IFormatProvider? formatProvider)
static unsafe void UInt64ToNumber(ulong value, ref NumberBuffer number)
Definition Number.cs:2586
static unsafe bool TryInt64ToHexStr(long value, char hexBase, int digits, Span< char > destination, out int charsWritten)
Definition Number.cs:2561
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 unsafe bool TryUInt64ToDecStr(ulong value, int digits, Span< char > destination, out int charsWritten)
Definition Number.cs:2631
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.TryInt64ToHexStr(), System.Number.TryUInt64ToDecStr(), System.Number.UInt64ToNumber(), and System.value.

Referenced by System.UInt64.TryFormat().