【问题标题】:Base85 aka ASCII85 java projects [closed]Base85 又名 ASCII85 java 项目 [关闭]
【发布时间】:2011-10-21 05:19:06
【问题描述】:

除了com.idataconnect.lib.ascii85codec 之外,有没有人知道其他类似org.apache.commons.codec.binary.Base64 类的java 项目?

【问题讨论】:

    标签: java project base85 ascii85


    【解决方案1】:

    我发现这个项目似乎可以解决问题: http://pdfbox.apache.org/downloads.html#recent

    以下类编码和解码。非常欢迎代码审查和建议:

     import org.apache.pdfbox.io.ASCII85InputStream;
     import org.apache.pdfbox.io.ASCII85OutputStream;
    
     import java.io.ByteArrayInputStream;
     import java.io.ByteArrayOutputStream;
     import java.io.IOException;
     import java.io.UnsupportedEncodingException;
     import java.util.ArrayList;
    
    
    
     public class Ascii85Coder {
    
     public static byte[] decodeAscii85StringToBytes(String ascii85) {
        ArrayList<Byte> list = new ArrayList<Byte>();
        ByteArrayInputStream in_byte = null;
        try {
            in_byte = new ByteArrayInputStream(ascii85.getBytes("ascii"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        ASCII85InputStream in_ascii = new ASCII85InputStream(in_byte);
        try {
            int r ;
            while ((r = in_ascii.read()) != -1) {
                list.add((byte) r);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        byte[] bytes = new byte[list.size()];
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] = list.get(i);
        }
        return bytes;
    }
    
    
    public static String encodeBytesToAscii85(byte[] bytes) {
        ByteArrayOutputStream out_byte = new ByteArrayOutputStream();
        ASCII85OutputStream  out_ascii = new ASCII85OutputStream(out_byte);
    
        try {
            out_ascii.write(bytes);
            out_ascii.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
        String res = "";
        try {
            res = out_byte.toString("ascii");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return res;
    }
    }
    

    【讨论】:

    • 由于 PDFbox 是开源的,您可以将代码复制到您的项目中,以免在您的类路径中添加您可能不需要的东西。
    • 建议:删除 printStackTrace。要么处理问题,要么重新/抛出异常。
    • 请注意,将开源代码复制到您的项目中时,您仍然需要遵守复制代码的许可,例如给出归属,包括许可证副本等。
    【解决方案2】:

    java.net 上有 Ascii85 实现。

    【讨论】:

    • 嗯,我上面提供的链接不是和你指定的codec一样吗?
    • @Mat Banik,我给的链接已经指向页面,你指的是什么链接?
    猜你喜欢
    • 2021-01-26
    • 2011-01-06
    • 2013-05-11
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2015-05-03
    • 1970-01-01
    相关资源
    最近更新 更多