Java将Base64转换为十六进制字符串

Java将Base64转换为十六进制字符串

问题描述:

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

I have one Base64 String YxRfXk827kPgkmMUX15PNg== I want to convert it into 63145F5E4F36EE43E09263145F5E4F36

所以我认为情况会像这样 我必须先解码Base64字符串,然后将其转换为十六进制

So I think scenario would be like this I have to first decode Base64 string and than convert it into 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

但是我不知道如何将这个字符串转换成十六进制字符串.因此它给出了63145F5E4F36EE43E09263145F5E4F36输出.

But I don't know How to convert this string into Hex string. So it gives the 63145F5E4F36EE43E09263145F5E4F36 output.

所以请帮助我解决此问题.

So please help me to fix this issue.

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

Since you are already using 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)));