public BaseN(string alphabet, uint blockMaxBitsCount = 32,
Encoding encoding = null, bool reverseOrder = false, bool parallel = false)
: base((uint)alphabet.Length, alphabet, '\0', encoding, parallel)
{
BlockMaxBitsCount = blockMaxBitsCount;
uint charsCountInBits;
BlockBitsCount = GetOptimalBitsCount(CharsCount, out charsCountInBits, blockMaxBitsCount);
BlockCharsCount = (int)charsCountInBits;
_powN = new ulong[BlockCharsCount];
ulong pow = 1;
for (int i = 0; i < BlockCharsCount - 1; i++)
{
_powN[BlockCharsCount - 1 - i] = pow;
pow *= CharsCount;
}
_powN[0] = pow;
ReverseOrder = reverseOrder;
}