36 lines
848 B
C#
36 lines
848 B
C#
namespace GostCryptography.Asn1.Ber
|
|
{
|
|
public abstract class Asn1CharSet
|
|
{
|
|
private readonly int _aBitsPerChar;
|
|
private readonly int _uBitsPerChar;
|
|
|
|
protected internal Asn1CharSet(int nchars)
|
|
{
|
|
_uBitsPerChar = Asn1Integer.GetBitCount(nchars - 1);
|
|
_aBitsPerChar = 1;
|
|
|
|
while (_uBitsPerChar > _aBitsPerChar)
|
|
{
|
|
_aBitsPerChar = _aBitsPerChar << 1;
|
|
}
|
|
}
|
|
|
|
public abstract int MaxValue { get; }
|
|
|
|
public abstract int GetCharAtIndex(int index);
|
|
|
|
public abstract int GetCharIndex(int charValue);
|
|
|
|
public virtual int GetNumBitsPerChar(bool aligned)
|
|
{
|
|
if (!aligned)
|
|
{
|
|
return _uBitsPerChar;
|
|
}
|
|
|
|
return _aBitsPerChar;
|
|
}
|
|
}
|
|
}
|