code: public static String longToHex(final long src, final int srcPos, final String dstInit, final int dstPos,
              final int nHexs) {
          if (0 == nHexs) {
              return dstInit;
          }
          if ((nHexs - 1) * 4 + srcPos >= 64) {
              throw new IllegalArgumentException("(nHexs-1)*4+srcPos is greater or equal to than 64");
          }
          final StringBuilder sb = new StringBuilder(dstInit);
          int append = sb.length();
          for (int i = 0; i < nHexs; i++) {
              final int shift = i * 4 + srcPos;
              final int bits = (int) (0xF & (src >> shift));
              if (dstPos + i == append) {
                  ++append;
                  sb.append(intToHexDigit(bits));
              } else {
                  sb.setCharAt(dstPos + i, intToHexDigit(bits));
              }
          }
          return sb.toString();
      }
docs: <p>
  Converts a long into an array of Char using the default (little endian, Lsb0) byte and
  bit ordering.
  </p>
  
  @param src the long to convert
  @param srcPos the position in {@code src}, in bits, from where to start the conversion
  @param dstInit the initial value for the result String
  @param dstPos the position in {@code dst} where to copy the result
  @param nHexs the number of Chars to copy to {@code dst}, must be smaller or equal to the
  width of the input (from srcPos to msb)
  @return {@code dst}
  @throws IllegalArgumentException if {@code (nHexs-1)*4+srcPos >= 64}
  @throws StringIndexOutOfBoundsException if {@code dst.init.length() < dstPos}