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

◆ TryFormatInt32()

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

Definition at line 1929 of file Number.cs.

1930 {
1931 if (format.Length == 0)
1932 {
1933 if (value < 0)
1934 {
1935 return TryNegativeInt32ToDecStr(value, -1, NumberFormatInfo.GetInstance(provider).NegativeSign, destination, out charsWritten);
1936 }
1937 return TryUInt32ToDecStr((uint)value, -1, destination, out charsWritten);
1938 }
1939 return TryFormatInt32Slow(value, hexMask, format, provider, destination, out charsWritten);
1940 unsafe static bool TryFormatInt32Slow(int value, int hexMask, ReadOnlySpan<char> format, IFormatProvider provider, Span<char> destination, out int charsWritten)
1941 {
1942 int digits;
1943 char c = ParseFormatSpecifier(format, out digits);
1944 char c2 = (char)(c & 0xFFDFu);
1945 if ((c2 == 'G') ? (digits < 1) : (c2 == 'D'))
1946 {
1947 if (value < 0)
1948 {
1949 return TryNegativeInt32ToDecStr(value, digits, NumberFormatInfo.GetInstance(provider).NegativeSign, destination, out charsWritten);
1950 }
1951 return TryUInt32ToDecStr((uint)value, digits, destination, out charsWritten);
1952 }
1953 if (c2 == 'X')
1954 {
1955 return TryInt32ToHexStr(value & hexMask, GetHexBase(c), digits, destination, out charsWritten);
1956 }
1957 NumberFormatInfo instance = NumberFormatInfo.GetInstance(provider);
1958 byte* digits2 = stackalloc byte[11];
1959 NumberBuffer number = new NumberBuffer(NumberBufferKind.Integer, digits2, 11);
1960 Int32ToNumber(value, ref number);
1961 char* pointer = stackalloc char[32];
1962 ValueStringBuilder sb = new ValueStringBuilder(new Span<char>(pointer, 32));
1963 if (c != 0)
1964 {
1965 NumberToString(ref sb, ref number, c, digits, instance);
1966 }
1967 else
1968 {
1969 NumberToStringFormat(ref sb, ref number, format, instance);
1970 }
1971 return sb.TryCopyTo(destination, out charsWritten);
1972 }
1973 }
static NumberFormatInfo GetInstance(IFormatProvider? formatProvider)
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 bool TryNegativeInt32ToDecStr(int value, int digits, string sNegative, Span< char > destination, out int charsWritten)
Definition Number.cs:2274
static unsafe void NumberToStringFormat(ref ValueStringBuilder sb, ref NumberBuffer number, ReadOnlySpan< char > format, NumberFormatInfo info)
Definition Number.cs:2817
static unsafe void Int32ToNumber(int value, ref NumberBuffer number)
Definition Number.cs:2223
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.Int32ToNumber(), System.Number.NumberToString(), System.Number.NumberToStringFormat(), System.Number.ParseFormatSpecifier(), System.pointer, System.Text.ValueStringBuilder.TryCopyTo(), System.Number.TryInt32ToHexStr(), System.Number.TryNegativeInt32ToDecStr(), System.Number.TryUInt32ToDecStr(), and System.value.

Referenced by System.Int16.TryFormat(), System.Int32.TryFormat(), and System.SByte.TryFormat().