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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值