`
yuxiang2004
  • 浏览: 26030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Base64<2>

    博客分类:
  • java
阅读更多
public static byte[] decode(byte[] data) {
            byte[] bytes;
            byte b1;
            byte b2;
            byte b3;
            byte b4;
            data = discardNonBase64Bytes(data);
            if (data[data.length - 2] == '=') {
                bytes = new byte[(((data.length / 4) - 1) * 3) + 1];
            } else if (data[data.length - 1] == '=') {
                bytes = new byte[(((data.length / 4) - 1) * 3) + 2];
            } else {
                bytes = new byte[((data.length / 4) * 3)];
            }
            for (int i = 0, j = 0; i < (data.length - 4); i += 4, j += 3) {
                b1 = decodingTable[data[i]];
                b2 = decodingTable[data[i + 1]];
                b3 = decodingTable[data[i + 2]];
                b4 = decodingTable[data[i + 3]];
                bytes[j] = (byte) ((b1 << 2) | (b2 >> 4));
                bytes[j + 1] = (byte) ((b2 << 4) | (b3 >> 2));
                bytes[j + 2] = (byte) ((b3 << 6) | b4);
            }
            if (data[data.length - 2] == '=') {
                b1 = decodingTable[data[data.length - 4]];
                b2 = decodingTable[data[data.length - 3]];
                bytes[bytes.length - 1] = (byte) ((b1 << 2) | (b2 >> 4));
            } else if (data[data.length - 1] == '=') {
                b1 = decodingTable[data[data.length - 4]];
                b2 = decodingTable[data[data.length - 3]];
                b3 = decodingTable[data[data.length - 2]];
                bytes[bytes.length - 2] = (byte) ((b1 << 2) | (b2 >> 4));
                bytes[bytes.length - 1] = (byte) ((b2 << 4) | (b3 >> 2));
            } else {
                b1 = decodingTable[data[data.length - 4]];
                b2 = decodingTable[data[data.length - 3]];
                b3 = decodingTable[data[data.length - 2]];
                b4 = decodingTable[data[data.length - 1]];
                bytes[bytes.length - 3] = (byte) ((b1 << 2) | (b2 >> 4));
                bytes[bytes.length - 2] = (byte) ((b2 << 4) | (b3 >> 2));
                bytes[bytes.length - 1] = (byte) ((b3 << 6) | b4);
            }
            return bytes;
        }
        public static byte[] decode(String data) {
            byte[] bytes;
            byte b1;
            byte b2;
            byte b3;
            byte b4;
            data = discardNonBase64Chars(data);
            if (data.charAt(data.length() - 2) == '=') {
                bytes = new byte[(((data.length() / 4) - 1) * 3) + 1];
            } else if (data.charAt(data.length() - 1) == '=') {
                bytes = new byte[(((data.length() / 4) - 1) * 3) + 2];
            } else {
                bytes = new byte[((data.length() / 4) * 3)];
            }
分享到:
评论

相关推荐

    解决canvas转base64/jpeg时透明区域变成黑色背景的方法

    在用canvas将png图片转jpeg时,发现透明区域被填充成黑色。 代码如下: ... &lt;p&gt;Canvas:&lt;/p&gt;  ... &lt;p&gt;Base64转码后的图片:&lt;/p&gt;  &lt;div u00a0id=base64Img&gt;&lt;/div&gt;  [removed]  var base64Img = document

    Blue Magic Board Plus! v2.1 Beta 1

    + 论坛邮件采用 Base 64 + UTF-8 格式发送&lt;br&gt; 7. + 快速跳转版块菜单&lt;br&gt; 8. + 快速选择风格&lt;br&gt; 9. + 用户可选择是否使用可视化发帖器&lt;br&gt; 10. + 可设置是否允许某用户组用户看到隐身用户&lt;br&gt; 11. + 可设置是否...

    zxing生成二维码,图片Base64编码

    在这个场景中,我们将讨论如何使用ZXing库生成二维码,并且如何将生成的二维码图片进行Base64编码。 首先,让我们了解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,能够存储大量的信息,如...

    基于itext7+freemarker模板导出pdf

    Map&lt;String, Object&gt; data = new HashMap&lt;&gt;(); data.put("title", "报告标题"); data.put("content", "这是报告内容..."); // 添加更多数据... ``` 步骤四:生成HTML字符串 使用FreeMarker的`Template`类加载模板...

    openssl编程

    65&lt;br&gt;12.1 BASE64编码介绍 65&lt;br&gt;12.2 BASE64编解码原理 65&lt;br&gt;12.3 主要函数 66&lt;br&gt;12.4 编程示例 66&lt;br&gt;第十三章 Openssl ASN1库 69&lt;br&gt;13.1 ASN1简介 69&lt;br&gt;13.2 DER编码 70&lt;br&gt;13.3 ASN1基本类型示例 71&lt;br&gt;...

    H5移动端Base64压缩图片

    &lt;button onclick="downloadBase64()"&gt;下载Base64图片&lt;/button&gt; &lt;script&gt; function downloadBase64() { var img = document.getElementById('image'); var canvas = document.getElementById('canvas'); var ...

    Visual C++ 编程资源大全(英文控件)

    1,01.zip&lt;br&gt;Toolbar - Custom status messages and tooltips&lt;br&gt;用户状态信息与工具提示(3KB)&lt;END&gt;&lt;br&gt;2,02.zip&lt;br&gt;Remove system menu from floating toolbar&lt;br&gt;从浮动工具条中去除系统菜单(2KB)&lt;END&gt;&lt;br&gt;3,03....

    OpenSSL编程(三合一版).zip

    65&lt;br&gt;12.1 BASE64编码介绍 65&lt;br&gt;12.2 BASE64编解码原理 65&lt;br&gt;12.3 主要函数 66&lt;br&gt;12.4 编程示例 66&lt;br&gt;第十三章 Openssl ASN1库 69&lt;br&gt;13.1 ASN1简介 69&lt;br&gt;13.2 DER编码 70&lt;br&gt;13.3 ASN1基本类型示例 71&lt;br&gt;...

    java生成二维码,java将二维码转换成base64

    Map&lt;EncodeHintType, ErrorCorrectionLevel&gt; hints = new HashMap&lt;&gt;(); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix ...

    The Art of Assembly Language Programming

    The 80x86 MOV Instruction&lt;br&gt;4.8 - Some Final Comments on the MOV Instructions&lt;br&gt;&lt;br&gt;4.9 Laboratory Exercises&lt;br&gt;4.9.1 The UCR Standard Library for 80x86 Assembly Language Programmers&lt;br&gt;4.9.2 ...

    Synapse TCP/IP Library v24一套通信类和函数库

    支持Base64和Quoted-pritable编码与解码;&lt;br&gt; 支持UUCode和XXCode解码;&lt;br&gt; …………&lt;br&gt; &lt;br&gt; 完整功能.&nbsp;&nbsp;&nbsp;&nbsp;源代码: 有 &lt;br&gt; 适用于 CB3 CB4 CB5 D2 D3 D4 D5 D6 K1&nbsp;

    Visual C++ 编程资源大全(英文源码 其它)

    1,01.zip&lt;br&gt;Output&lt;br&gt;显示所有的调试信息(5KB)&lt;END&gt;&lt;br&gt;2,02.zip&lt;br&gt;Some general debugging tips&lt;br&gt;一般的调试技巧(11KB)&lt;END&gt;&lt;br&gt;3,03.zip&lt;br&gt;Debugging ISAPI extension&lt;br&gt;调试ISAPI扩展(4KB)&lt;END&gt;&lt;br&gt;4,04....

    Visual C++ 编程资源大全(控件 文件)

    1,ftp.ZIP &lt;br&gt;DIY一个CUTEFTP之类的程序(45KB)&lt;END&gt;&lt;br&gt;2,base64.ZIP &lt;br&gt;一个DLL文件(14KB)&lt;END&gt;&lt;br&gt;3,uueuud.ZIP &lt;br&gt;按照UUCode标准对文件进行快速编码(14KB)&lt;END&gt; &lt;br&gt;4,dssk170d.EXE &lt;br&gt;由Dolphin System公司...

    base64转换遇到问题解决方法

    2. 字符编码问题:BASE64转换过程中,可能会出现字符编码问题,例如中文字符的编码问题。 解决方法 要解决这些问题,可以使用以下方法: 1. 对于Access restriction问题,可以在project build path中先移除JRE ...

    Visual C++ 编程资源大全(英文源码 系统)

    1,01.zip&lt;br&gt;Class for displaying system error messages&lt;br&gt;显示系统错误信息的一个类(5KB)&lt;END&gt;&lt;br&gt;2,02.zip&lt;br&gt;Simple Thread Class&lt;br&gt;一个简单的线程类(13KB)&lt;END&gt;&lt;br&gt;3,03.zip&lt;br&gt;Single Instance Program ...

    Visual C++ 编程资源大全(英文源码 控件)

    (2KB)&lt;END&gt;&lt;br&gt;28,listfind.zip&lt;br&gt;This sample shows how to use the CList&lt;&gt; template. (9KB)&lt;END&gt;&lt;br&gt;29,ndbrow.zip&lt;br&gt;This Visual C++ 6 project shows how to create an MDI application that hosts ...

    解决JDK1.6下的Base64报错问题

    2. **手动编写Base64编码器/解码器**:如果你不想引入额外的库,也可以自己实现Base64编码和解码逻辑。Base64算法的核心思想是将每三个字节(24位)转换为四个字符(64个可能的字符),并且在必要时添加填充。下面是...

    javabase64-1.3.1.jar

    &lt;artifactId&gt;javabase64&lt;/artifactId&gt; &lt;version&gt;1.3.1&lt;/version&gt; &lt;/dependency&gt; ``` 或者在Gradle中,可以在build.gradle文件中添加: ```groovy implementation 'com.novocode:javabase64:1.3.1' ``` 在实际应用...

    VMware Workstation Pro 14导入ova报错问题解决方法(Invalid target disk adapter type pvscsi)

    &lt;InstanceID&gt;2&lt;/InstanceID&gt; &lt;ResourceSubType&gt;other&lt;/ResourceSubType&gt; &lt;VirtualQuantity&gt;2048&lt;/VirtualQuantity&gt; &lt;/Item&gt; &lt;Item&gt; &lt;Info&gt;SCSI Controller information&lt;/Info&gt; &lt;ResourceType&gt;6&lt;/ResourceType...

    VB编程资源大全(控件 文件)

    1,ftp.ZIP &lt;br&gt;DIY一个CUTEFTP之类的程序(45KB)&lt;br&gt;2,base64.ZIP &lt;br&gt;一个DLL文件(14KB)&lt;br&gt;3,uueuud.ZIP &lt;br&gt;按照UUCode标准对文件进行快速编码(14KB) &lt;br&gt;4,docprops.ZIP &lt;br&gt;结构化存储文件接口,解压后有一个...

Global site tag (gtag.js) - Google Analytics