Java解析和转化64位字符串是有两种方式的
1.Java API本身自带功能
2.Apache做的共同Jar文件
public static String ecodeBase64(byte[] buf) {
return (new BASE64Encoder()).encode(buf);
}
public static byte[] decodeBase64(String buf) {
try {
return (new BASE64Decoder()).decodeBuffer(buf);
} catch (IOException e) {
}
return null;
}
//apache jar
public static String ecodeBase64_Common(byte[] buf) {
return Base64.encodeBase64String(buf);
}
public static byte[] decodeBase64_Common(String buf) {
return Base64.decodeBase64(buf);
}
public static String remove(String str) {
return str.substring(0, str.length() - 1);
}
对于上面两个方案,有个小问题
encode的时候会出现末尾出现额外字符的情况
我写了解决方案就是将末尾字符去掉remove方法
具体的问题的原因大概是java本身是127位的关系而不是128位的缘故
好了
上面代码我写了一个例子:
package com.java;
import java.io.IOException;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Test {
public static void main(String[] args) {
System.out.println(remove(ecodeBase64(decodeBase64("chenhailong"))));
System.out.println(remove(ecodeBase64_Common(decodeBase64_Common("chenhailong"))));
}
public static String ecodeBase64(byte[] buf) {
return (new BASE64Encoder()).encode(buf);
}
public static byte[] decodeBase64(String buf) {
try {
return (new BASE64Decoder()).decodeBuffer(buf);
} catch (IOException e) {
}
return null;
}
public static String ecodeBase64_Common(byte[] buf) {
return Base64.encodeBase64String(buf);
}
public static byte[] decodeBase64_Common(String buf) {
return Base64.decodeBase64(buf);
}
public static String remove(String str) {
return str.substring(0, str.length() - 1);
}
}
希望对你有帮助