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

◆ FormatInt32()

static string System.Number.FormatInt32 ( int value,
int hexMask,
string format,
IFormatProvider provider )
inlinestatic

Definition at line 1882 of file Number.cs.

1883 {
1884 if (string.IsNullOrEmpty(format))
1885 {
1886 if (value < 0)
1887 {
1888 return NegativeInt32ToDecStr(value, -1, NumberFormatInfo.GetInstance(provider).NegativeSign);
1889 }
1890 return UInt32ToDecStr((uint)value);
1891 }
1892 return FormatInt32Slow(value, hexMask, format, provider);
1893 unsafe static string FormatInt32Slow(int value, int hexMask, string format, IFormatProvider provider)
1894 {
1895 ReadOnlySpan<char> format2 = format;
1896 int digits;
1897 char c = ParseFormatSpecifier(format2, out digits);
1898 char c2 = (char)(c & 0xFFDFu);
1899 if ((c2 == 'G') ? (digits < 1) : (c2 == 'D'))
1900 {
1901 if (value < 0)
1902 {
1903 return NegativeInt32ToDecStr(value, digits, NumberFormatInfo.GetInstance(provider).NegativeSign);
1904 }
1905 return UInt32ToDecStr((uint)value, digits);
1906 }
1907 if (c2 == 'X')
1908 {
1909 return Int32ToHexStr(value & hexMask, GetHexBase(c), digits);
1910 }
1911 NumberFormatInfo instance = NumberFormatInfo.GetInstance(provider);
1912 byte* digits2 = stackalloc byte[11];
1913 NumberBuffer number = new NumberBuffer(NumberBufferKind.Integer, digits2, 11);
1914 Int32ToNumber(value, ref number);
1915 char* pointer = stackalloc char[32];
1916 ValueStringBuilder sb = new ValueStringBuilder(new Span<char>(pointer, 32));
1917 if (c != 0)
1918 {
1919 NumberToString(ref sb, ref number, c, digits, instance);
1920 }
1921 else
1922 {
1923 NumberToStringFormat(ref sb, ref number, format2, instance);
1924 }
1925 return sb.ToString();
1926 }
1927 }
static NumberFormatInfo GetInstance(IFormatProvider? formatProvider)
static unsafe string Int32ToHexStr(int value, char hexBase, int digits)
Definition Number.cs:2298
static unsafe string NegativeInt32ToDecStr(int value, int digits, string sNegative)
Definition Number.cs:2255
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 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
static unsafe string UInt32ToDecStr(uint value)
Definition Number.cs:2382

References System.format, System.Number.GetHexBase(), System.Globalization.NumberFormatInfo.GetInstance(), System.Number.Int32ToHexStr(), System.Number.Int32ToNumber(), System.Number.NegativeInt32ToDecStr(), System.Number.NumberToString(), System.Number.NumberToStringFormat(), System.Number.ParseFormatSpecifier(), System.pointer, System.Text.ValueStringBuilder.ToString(), System.Number.UInt32ToDecStr(), and System.value.

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