code: public static char binaryToHexDigitMsb0_4bits(final boolean[] src, final int srcPos) {
          if (src.length > 8) {
              throw new IllegalArgumentException("src.length>8: src.length=" + src.length);
          }
          if (src.length - srcPos < 4) {
              throw new IllegalArgumentException("src.length-srcPos<4: src.length=" + src.length + ", srcPos=" + srcPos);
          }
          if (src[srcPos + 3]) {
              if (src[srcPos + 2]) {
                  if (src[srcPos + 1]) {
                      return src[srcPos] ? 'f' : '7';
                  }
                  return src[srcPos] ? 'b' : '3';
              }
              if (src[srcPos + 1]) {
                  return src[srcPos] ? 'd' : '5';
              }
              return src[srcPos] ? '9' : '1';
          }
          if (src[srcPos + 2]) {
              if (src[srcPos + 1]) {
                  return src[srcPos] ? 'e' : '6';
              }
              return src[srcPos] ? 'a' : '2';
          }
          if (src[srcPos + 1]) {
              return src[srcPos] ? 'c' : '4';
          }
          return src[srcPos] ? '8' : '0';
      }
docs: <p>
  Converts binary (represented as boolean array) to a hexadecimal digit using the Msb0 bit
  ordering.
  </p>
  <p>
  (1, 0, 0, 0) is converted as follow: '8' (1,0,0,1,1,0,1,0) with srcPos = 3 is converted
  to 'D'
  </p>
  
  @param src the binary to convert
  @param srcPos the position of the lsb to start the conversion
  @return a hexadecimal digit representing the selected bits
  @throws IllegalArgumentException if {@code src} is empty, {@code src.length > 8} or
  {@code src.length - srcPos < 4}
  @throws NullPointerException if {@code src} is {@code null}