De la discussion ici, et surtout cette réponse, c'est la fonction que j'utilise actuellement:
final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
public static String bytesToHex(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] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
Mon petit repères (un million d'octets d'un millier de fois, 256 octets de 10 millions de fois) ont montré qu'il est beaucoup plus rapide que n'importe quel autre, environ la moitié du temps sur le long de tableaux. Par rapport à la réponse je l'ai pris de, le passage à la bit-à-bit de la fpo --- comme il est suggéré dans la discussion --- réduire d'environ 20% du temps pour les longs tableaux. (Edit: Quand je dis que c'est plus rapide que les autres solutions, je veux dire le code alternatif offert dans les discussions. La Performance est l'équivalent de Communes Codec, qui utilise le même code.)