internal static string ToBinaryString(this byte[] bits)
{
if (bits == null)
throw new ArgumentNullException(nameof(bits));
const int radix = 2;
const int padding = 8;
const char paddingChar = '0';
var sb = new StringBuilder();
sb.Append(Convert.ToString(bits[0], radix).PadLeft(padding, paddingChar));
sb.Append(Convert.ToString(bits[1], radix).PadLeft(padding, paddingChar));
sb.Append(Convert.ToString(bits[2], radix).PadLeft(padding, paddingChar));
sb.Append(Convert.ToString(bits[3], radix).PadLeft(padding, paddingChar));
return sb.ToString();
}