Java将Base64转换为Hex String

我有一个Base64字符串YxRfXk827kPgkmMUX15PNg==我想将其转换为63145F5E4F36EE43E09263145F5E4F36

所以我认为场景就像这样我必须首先解码Base64字符串,然后将其转换为Hex

我的代码如下

 import org.apache.commons.codec.binary.Base64; String guid = "YxRfXk827kPgkmMUX15PNg=="; byte[] decoded = Base64.decodeBase64(guid); try { System.out.println(new String(decoded, "UTF-8") + "\n"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } 

上面的代码给出了c_^O6?C??c_^O6

但我不知道如何将此字符串转换为hex字符串。 因此它给出了63145F5E4F36EE43E09263145F5E4F36输出。

所以请帮我解决这个问题。

由于您已经在使用Apache Common Codec:

 String guid = "YxRfXk827kPgkmMUX15PNg=="; byte[] decoded = Base64.decodeBase64(guid); String hexString = Hex.encodeHexString(decoded); System.out.println(hexString); 

使用标准Java库:

 String guid = "YxRfXk827kPgkmMUX15PNg=="; byte[] decoded = Base64.getDecoder().decode(guid); System.out.println(String.format("%040x", new BigInteger(1, decoded))); 

嘿尝试这个代码,它给出了预期的输出

 import java.util.Base64; /** * * @author hemants */ public class NewClass5 { public static void main(String[] args) { String guid = "YxRfXk827kPgkmMUX15PNg=="; byte[] decoded = Base64.getDecoder().decode(guid); System.out.println(toHex(decoded)); } private static final char[] DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; public static final String toHex(byte[] data) { final StringBuffer sb = new StringBuffer(data.length * 2); for (int i = 0; i < data.length; i++) { sb.append(DIGITS[(data[i] >>> 4) & 0x0F]); sb.append(DIGITS[data[i] & 0x0F]); } return sb.toString(); } } 

产量

 63145F5E4F36EE43E09263145F5E4F36