Java convert Base64 to Hex String
本问题已经有最佳答案,请猛点这里访问。
我有一个base64字符串
所以我想情况会是这样的我必须先解码base64字符串,然后把它转换成十六进制
我的代码如下
1 2 3 4 5 6 7 8 9 10 | import org.apache.commons.codec.binary.Base64; String guid ="YxRfXk827kPgkmMUX15PNg=="; byte[] decoded = Base64.decodeBase64(guid); try { System.out.println(new String(decoded,"UTF-8") +" "); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } |
上面的代码给出了
但我不知道如何将这个字符串转换成十六进制字符串。所以它给出了
所以请帮我解决这个问题。
因为您已经在使用Apache通用编解码器:
1 2 3 4 |
使用标准Java库:
1 2 3 | String guid ="YxRfXk827kPgkmMUX15PNg=="; byte[] decoded = Base64.getDecoder().decode(guid); System.out.println(String.format("%040x", new BigInteger(1, decoded))); |
嘿,试试这个代码,它给出了预期的输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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(); } } |
产量
1 | 63145F5E4F36EE43E09263145F5E4F36 |