`

64位编码转换的一个实现

    博客分类:
  • JAVA
阅读更多
public class BASE64Encoder {
    private static final char last2byte = (char) Integer.parseInt("00000011", 2);
    private static final char last4byte = (char) Integer.parseInt("00001111", 2);
    private static final char last6byte = (char) Integer.parseInt("00111111", 2);
    private static final char lead6byte = (char) Integer.parseInt("11111100", 2);
    private static final char lead4byte = (char) Integer.parseInt("11110000", 2);
    private static final char lead2byte = (char) Integer.parseInt("11000000", 2);
    private static final char[] encodeTable = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'};

    public static String encode(byte[] from) {
        StringBuffer to = new StringBuffer((int) (from.length * 1.34) + 3);
        int num = 0;
        char currentByte = 0;
        for (int i = 0; i < from.length; i++) {
            num = num % 8;
            while (num < 8) {
                switch (num) {
                    case 0:
                        currentByte = (char) (from[i] & lead6byte);
                        currentByte = (char) (currentByte >>> 2);
                        break;
                    case 2:
                        currentByte = (char) (from[i] & last6byte);
                        break;
                    case 4:
                        currentByte = (char) (from[i] & last4byte);
                        currentByte = (char) (currentByte << 2);
                        if ((i + 1) < from.length) {
                            currentByte |= (from[i + 1] & lead2byte) >>> 6;
                        }
                        break;
                    case 6:
                        currentByte = (char) (from[i] & last2byte);
                        currentByte = (char) (currentByte << 4);
                        if ((i + 1) < from.length) {
                            currentByte |= (from[i + 1] & lead4byte) >>> 4;
                        }
                        break;
                }
                to.append(encodeTable[currentByte]);
                num += 6;
            }
        }
        if (to.length() % 4 != 0) {
            for (int i = 4 - to.length() % 4; i > 0; i--) {
                to.append("=");
            }
        }
        return to.toString();
    }
}


引用
具体出处找不到了。防止自己忘记
分享到:
评论

相关推荐

    Base64编码转换工具

    在标题提到的“Base64编码转换工具”中,我们主要讨论的是一个用C#语言开发的小型应用程序,该程序能够方便地实现Base64编码与普通文本之间的相互转换。 Base64编码的基本原理是将每3个字节(24位)的数据分成4组,...

    易语言字符编码转换

    在处理字符串和文本数据时,字符编码转换是一个常见的需求,因为不同的系统和应用可能使用不同的字符编码标准来表示文本。本资源提供了易语言字符编码转换的源码,帮助开发者理解和实现这一功能。 字符编码是用来...

    GBK编码转换汉字,汉字转换GBK编码,VC代码实现

    在IT行业中,编码转换是一个常见的任务,特别是在处理中文字符时。GBK编码是GB2312编码的扩展,用于表示更多的汉字和符号,是简体中文环境下广泛使用的一种字符编码。VC++,作为Microsoft的C++开发环境,提供了丰富...

    JS实现URL编码转换中文

    ### JS实现URL编码转换中文 在Web开发过程中,经常需要处理URL中的特殊字符,特别是中文字符。由于URL传输限制及浏览器解析原因,中文等非ASCII字符需要被编码为特定格式才能在网络上传输。本文将详细介绍如何使用...

    超级批量编码转换 1.0

    而Unicode则是一个通用的字符集,包含了世界上几乎所有的文字,UTF-8是Unicode的一种实现,它能兼容ASCII且占用空间相对较小。 在《超级批量编码转换 1.0》中,用户可以一次性选择多个需要转换编码的文件或整个目录...

    易语言调用API实现编码转换

    总之,易语言调用API实现编码转换是一个涵盖易语言基础、编码理论、API使用技巧、错误处理等多个方面的重要话题,通过深入学习和实践,不仅可以提升编程技能,还能为解决实际问题提供有力工具。

    c语言利用编码转换表实现gbk与unicode互转

    本篇文章将详细探讨如何在C语言中利用编码转换表来实现这种转换。 首先,我们要理解GBK和Unicode的基本概念。GBK是中国大陆广泛使用的汉字编码标准,它是GB2312的扩展,包含了更多的汉字和符号,能够覆盖大部分中文...

    CTF Converter 编码转换

    编码转换是信息安全领域中的一个关键概念,尤其是在CTF比赛中,参赛者经常需要面对各种编码系统,如ASCII、Unicode、Base64、Hexadecimal、ROT13、Caesar Cipher等。理解并熟练掌握这些编码方式的转换对于成功解题至...

    易语言新BASE64编码转换模块

    易语言新BASE64编码转换模块是针对易语言编程环境设计的一种编码处理工具,它主要功能是实现数据的BASE64编码与解码。BASE64是一种常见的数据编码方式,常用于在网络上传输二进制数据,因为ASCII字符集中的所有字符...

    文件转换为Base64编码

    这种编码方式是通过将每3个8位字节的数据转换成4个6位的字节,然后用64个不同的字符(包括大小写字母、数字以及"+"和"/")来表示这4个6位的字节,最后可能需要在末尾添加一个或多个等号("=")来填充不足的位。...

    C语言字符编码转换UNICODE、GBK、UTF-8互相转换

    在C语言中,进行字符编码转换通常涉及到内存操作和位操作,因为C语言没有内置的字符串类或者编码转换函数。以下是一些基本步骤: 1. **读取原始编码**:首先,你需要读取源文件或字符串,确定其当前的编码格式。这...

    文件编码转换工具

    这种工具通常支持常见的编码格式,如GBK、UTF-8、Unicode、Big5等,并能将一个文件从一种编码转换为另一种编码,确保文本在各种环境下都能正确显示。 在给定的压缩包文件中,我们可以看到以下几个文件: 1. **访问...

    文件编码转换器

    文件编码转换器是一种工具软件,它的主要功能是将文件中的文本内容从一种编码格式转换成另一种编码格式。在处理多语言环境或者从互联网下载的文件时,由于各种系统和平台的差异,文件可能采用的编码格式不一致,这...

    易语言对象版编码转换模块源码

    在这个源码中,开发者使用了ADODB.Stream对象来实现编码转换,这是ActiveX Data Objects (ADODB) 库中的一个组件,它可以处理不同类型的数据流,包括文本、二进制等,非常适合进行编码转换操作。 ADODB.Stream对象...

    GBK编码转换和UTF-8编码转换模块源码

    在IT行业中,编码转换是一个非常基础且重要的概念,特别是在处理多语言或跨平台的数据时。GBK编码和UTF-8编码是两种广泛使用的字符编码标准,它们各有特点,但不兼容,因此在不同环境下进行数据交换时,需要进行相应...

    编码转换小工具,包含多种编码的相互转换[html编码转换 unicode编码转换 url编码转换 编码转换],基于framework 3.5的winform程序

    编码转换是IT领域中一个非常基础且重要的概念,特别是在处理多语言、网络传输以及数据存储时。本小工具是一款基于Microsoft .NET Framework 3.5的Windows桌面应用程序(Winform程序),专门用于实现HTML编码、...

    JavaScript实现Base64编码转换

    由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括...

    编码转换工具集

    Unicode编码有多种实现,如UCS-2使用两个字节表示一个字符,UCS-4使用四个字节,而UTF-8、UTF-16等则是变长编码。Unicode的目的是消除不同编码系统之间的不兼容,使得数据可以在不同的系统之间无缝转移。 编码转换...

    文字编码转换工具

    本文将深入探讨“文字编码转换工具”的重要性、原理以及它支持的各种编码格式,如Native、Unicode(包括UTF-8)等。 首先,让我们了解什么是文字编码。在计算机中,文字是以二进制的形式存在的,而文字编码就是将...

    一个将BIG5编码转换为GB2312编码的类

    标题中的“一个将BIG5编码转换为GB2312编码的类”指的是这个压缩包包含了一个Java类,它的功能是实现字符编码的转换,即从BIG5编码转成GB2312编码。在早期的中文计算机系统中,由于地区差异和历史原因,台湾地区普遍...

Global site tag (gtag.js) - Google Analytics