/// <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())); }
public static BitString GetLeastSignificantBits(int numBits, BitString bitString) { return(BitString.Substring(bitString, 0, numBits)); }
public static BitString GetMostSignificantBits(int numBits, BitString bitString) { return(BitString.Substring(bitString, bitString.BitLength - numBits, numBits)); }