In Java, how do I convert a byte array to a string of hex digits while keeping leading zeros? [duplicate]
Check out Hex.encodeHexString from Apache Commons Codec.
import org.apache.commons.codec.binary.Hex;String hex = Hex.encodeHexString(bytes);
You can use the one below. I tested this with leading zero bytes and with initial negative bytes as well
public static String toHex(byte[] bytes) { BigInteger bi = new BigInteger(1, bytes); return String.format("%0" + (bytes.length << 1) + "X", bi);}
If you want lowercase hex digits, use "x"
in the format String.
A simple approach would be to check how many digits are output by Integer.toHexString()
and add a leading zero to each byte if needed. Something like this:
public static String toHexString(byte[] bytes) { StringBuilder hexString = new StringBuilder(); for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(0xFF & bytes[i]); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } return hexString.toString();}