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

◆ TryFormatInt64()

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

Definition at line 2099 of file Number.cs.

2100 {
2101 if (format.Length == 0)
2102 {
2103 if (value < 0)
2104 {
2105 return TryNegativeInt64ToDecStr(value, -1, NumberFormatInfo.GetInstance(provider).NegativeSign, destination, out charsWritten);
2106 }
2107 return TryUInt64ToDecStr((ulong)value, -1, destination, out charsWritten);
2108 }
2109 return TryFormatInt64Slow(value, format, provider, destination, out charsWritten);
2110 unsafe static bool TryFormatInt64Slow(long value, ReadOnlySpan<char> format, IFormatProvider provider, Span<char> destination, out int charsWritten)
2111 {
2112 int digits;
2113 char c = ParseFormatSpecifier(format, out digits);
2114 char c2 = (char)(c & 0xFFDFu);
2115 if ((c2 == 'G') ? (digits < 1) : (c2 == 'D'))
2116 {
2117 if (value < 0)
2118 {
2119 return TryNegativeInt64ToDecStr(value, digits, NumberFormatInfo.GetInstance(provider).NegativeSign, destination, out charsWritten);
2120 }
2121 return TryUInt64ToDecStr((ulong)value, digits, destination, out charsWritten);
2122 }
2123 if (c2 == 'X')
2124 {
2125 return TryInt64ToHexStr(value, GetHexBase(c), digits, destination, out charsWritten);
2126 }
2127 NumberFormatInfo instance = NumberFormatInfo.GetInstance(provider);
2128 byte* digits2 = stackalloc byte[20];
2129 NumberBuffer number = new NumberBuffer(NumberBufferKind.Integer, digits2, 20);
2130 Int64ToNumber(value, ref number);
2131 char* pointer = stackalloc char[32];
2132 ValueStringBuilder sb = new ValueStringBuilder(new Span<char>(pointer, 32));
2133 if (c != 0)
2134 {
2135 NumberToString(ref sb, ref number, c, digits, instance);
2136 }
2137 else
2138 {
2139 NumberToStringFormat(ref sb, ref number, format, instance);
2140 }
2141 return sb.TryCopyTo(destination, out charsWritten);
2142 }
2143 }
static NumberFormatInfo GetInstance(IFormatProvider? formatProvider)
static unsafe void Int64ToNumber(long input, ref NumberBuffer number)
Definition Number.cs:2450
static unsafe bool TryInt64ToHexStr(long value, char hexBase, int digits, Span< char > destination, out int charsWritten)
Definition Number.cs:2561
static unsafe bool TryNegativeInt64ToDecStr(long input, int digits, string sNegative, Span< char > destination, out int charsWritten)
Definition Number.cs:2510
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.Int64ToNumber(), System.Number.NumberToString(), System.Number.NumberToStringFormat(), System.Number.ParseFormatSpecifier(), System.pointer, System.Text.ValueStringBuilder.TryCopyTo(), System.Number.TryInt64ToHexStr(), System.Number.TryNegativeInt64ToDecStr(), System.Number.TryUInt64ToDecStr(), and System.value.

Referenced by System.Int64.TryFormat().