public void BigIntegerTest() { var bigInteger = stackalloc uint[100]; var bigIntegerLength = 0; fixed(char *chars = &__("1218121812181218121812181218121812181218", out var length)) { bigIntegerLength = NumberHelper.Decimal.ParseBigInteger(chars, length, bigInteger).written; } NumberHelper.Mult(bigInteger, bigIntegerLength, uint.MaxValue, out var carry); if (carry != 0) { bigInteger[bigIntegerLength] = carry; ++bigIntegerLength; } AreEqual(carry, 3U); NumberHelper.Add(bigInteger, bigIntegerLength, 123, out carry); if (carry != 0) { bigInteger[bigIntegerLength] = carry; ++bigIntegerLength; } bigIntegerLength = NumberHelper.Sub(bigInteger, bigIntegerLength, 456, out var remainder); AreEqual(remainder, 0U); bigIntegerLength = NumberHelper.Div(bigInteger, bigIntegerLength, 753, out remainder); AreEqual(remainder, 210U); var str = stackalloc char[100]; var strLength = NumberHelper.Decimal.ToString(bigInteger, bigIntegerLength, str); AreEqual(StringHelper.ToString(str, strLength), "6947932728611506568983591586250258491983961839"); strLength = NumberHelper.Hex.ToString(bigInteger, bigIntegerLength, str); AreEqual(StringHelper.ToString(str, strLength), "1378e5b2e5219f9f248d9e89890dcc85a029eef"); }