public static String hex(byte[] bytes){
  char[] hexChars=new char[bytes.length * 2];
  for (int j=0; j < bytes.length; j++) {
    int v=bytes[j] & 0xFF;
    hexChars[j * 2]=HEXES_SMALL[v >>> 4];
    hexChars[j * 2 + 1]=HEXES_SMALL[v & 0x0F];
  }
  return new String(hexChars);
}

public static String hex ( byte [ ] bytes ) { char [ ] hexChars = new char [ bytes . length * 2 ] ; for ( int j = 0 ; j < bytes . length ; j ++ ) { int v = bytes [ j ] & 0xFF ; hexChars [ j * 2 ] = HEXES_SMALL [ v > > > 4 ] ; hexChars [ j * 2 + 1 ] = HEXES_SMALL [ v & 0x0F ] ; } return new String ( hexChars ) ; }
calculating lowcase hex string
