コード例 #1
0
        /// <summary>
        /// Converts a <see cref="BitString"/> to a <see cref="NumeralString"/>.
        ///
        /// <see cref="BitString"/> is expected to be a modulus of 16.
        /// </summary>
        /// <param name="bitString">The <see cref="BitString"/> to convert.</param>
        /// <returns><see cref="NumeralString"/> conversion of provided <see cref="BitString"/>.</returns>
        /// <exception cref="ArgumentException">Thrown when the <see cref="BitString"/>'s BitLength is not a modulus of 16.</exception>
        public static NumeralString ToNumeralString(BitString bitString)
        {
            const int requiredMod = 16;

            if (bitString.BitLength % requiredMod != 0)
            {
                throw new ArgumentException($"Invalid modulus for {nameof(bitString)}");
            }

            var numbers = new List <int>();

            for (var i = 0; i < bitString.BitLength / requiredMod; i++)
            {
                var subString = bitString.Substring(bitString.BitLength - ((i + 1) * requiredMod), requiredMod).ToHex();
                numbers.Add(Convert.ToInt32($"0x{subString}", requiredMod));
            }

            return(new NumeralString(numbers.ToArray()));
        }
コード例 #2
0
ファイル: BitString.cs プロジェクト: usnistgov/ACVP-Server
 public static BitString GetLeastSignificantBits(int numBits, BitString bitString)
 {
     return(BitString.Substring(bitString, 0, numBits));
 }
コード例 #3
0
ファイル: BitString.cs プロジェクト: usnistgov/ACVP-Server
 public static BitString GetMostSignificantBits(int numBits, BitString bitString)
 {
     return(BitString.Substring(bitString, bitString.BitLength - numBits, numBits));
 }