`

Java 解析和转化 Base64位字符串的两种方案

 
阅读更多

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);
    }
}

 

 

 

希望对你有帮助 

 

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics