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将png图片转jpeg时,发现透明区域被填充成黑色。 代码如下: ... <p>Canvas:</p> ... <p>Base64转码后的图片:</p> <div u00a0id=base64Img></div> [removed] var base64Img = document
+ 论坛邮件采用 Base 64 + UTF-8 格式发送<br> 7. + 快速跳转版块菜单<br> 8. + 快速选择风格<br> 9. + 用户可选择是否使用可视化发帖器<br> 10. + 可设置是否允许某用户组用户看到隐身用户<br> 11. + 可设置是否...
在这个场景中,我们将讨论如何使用ZXing库生成二维码,并且如何将生成的二维码图片进行Base64编码。 首先,让我们了解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,能够存储大量的信息,如...
Map<String, Object> data = new HashMap<>(); data.put("title", "报告标题"); data.put("content", "这是报告内容..."); // 添加更多数据... ``` 步骤四:生成HTML字符串 使用FreeMarker的`Template`类加载模板...
65<br>12.1 BASE64编码介绍 65<br>12.2 BASE64编解码原理 65<br>12.3 主要函数 66<br>12.4 编程示例 66<br>第十三章 Openssl ASN1库 69<br>13.1 ASN1简介 69<br>13.2 DER编码 70<br>13.3 ASN1基本类型示例 71<br>...
<button onclick="downloadBase64()">下载Base64图片</button> <script> function downloadBase64() { var img = document.getElementById('image'); var canvas = document.getElementById('canvas'); var ...
1,01.zip<br>Toolbar - Custom status messages and tooltips<br>用户状态信息与工具提示(3KB)<END><br>2,02.zip<br>Remove system menu from floating toolbar<br>从浮动工具条中去除系统菜单(2KB)<END><br>3,03....
65<br>12.1 BASE64编码介绍 65<br>12.2 BASE64编解码原理 65<br>12.3 主要函数 66<br>12.4 编程示例 66<br>第十三章 Openssl ASN1库 69<br>13.1 ASN1简介 69<br>13.2 DER编码 70<br>13.3 ASN1基本类型示例 71<br>...
Map<EncodeHintType, ErrorCorrectionLevel> hints = new HashMap<>(); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix ...
The 80x86 MOV Instruction<br>4.8 - Some Final Comments on the MOV Instructions<br><br>4.9 Laboratory Exercises<br>4.9.1 The UCR Standard Library for 80x86 Assembly Language Programmers<br>4.9.2 ...
支持Base64和Quoted-pritable编码与解码;<br> 支持UUCode和XXCode解码;<br> …………<br> <br> 完整功能. 源代码: 有 <br> 适用于 CB3 CB4 CB5 D2 D3 D4 D5 D6 K1
1,01.zip<br>Output<br>显示所有的调试信息(5KB)<END><br>2,02.zip<br>Some general debugging tips<br>一般的调试技巧(11KB)<END><br>3,03.zip<br>Debugging ISAPI extension<br>调试ISAPI扩展(4KB)<END><br>4,04....
1,ftp.ZIP <br>DIY一个CUTEFTP之类的程序(45KB)<END><br>2,base64.ZIP <br>一个DLL文件(14KB)<END><br>3,uueuud.ZIP <br>按照UUCode标准对文件进行快速编码(14KB)<END> <br>4,dssk170d.EXE <br>由Dolphin System公司...
2. 字符编码问题:BASE64转换过程中,可能会出现字符编码问题,例如中文字符的编码问题。 解决方法 要解决这些问题,可以使用以下方法: 1. 对于Access restriction问题,可以在project build path中先移除JRE ...
1,01.zip<br>Class for displaying system error messages<br>显示系统错误信息的一个类(5KB)<END><br>2,02.zip<br>Simple Thread Class<br>一个简单的线程类(13KB)<END><br>3,03.zip<br>Single Instance Program ...
(2KB)<END><br>28,listfind.zip<br>This sample shows how to use the CList<> template. (9KB)<END><br>29,ndbrow.zip<br>This Visual C++ 6 project shows how to create an MDI application that hosts ...
2. **手动编写Base64编码器/解码器**:如果你不想引入额外的库,也可以自己实现Base64编码和解码逻辑。Base64算法的核心思想是将每三个字节(24位)转换为四个字符(64个可能的字符),并且在必要时添加填充。下面是...
<artifactId>javabase64</artifactId> <version>1.3.1</version> </dependency> ``` 或者在Gradle中,可以在build.gradle文件中添加: ```groovy implementation 'com.novocode:javabase64:1.3.1' ``` 在实际应用...
<InstanceID>2</InstanceID> <ResourceSubType>other</ResourceSubType> <VirtualQuantity>2048</VirtualQuantity> </Item> <Item> <Info>SCSI Controller information</Info> <ResourceType>6</ResourceType...
1,ftp.ZIP <br>DIY一个CUTEFTP之类的程序(45KB)<br>2,base64.ZIP <br>一个DLL文件(14KB)<br>3,uueuud.ZIP <br>按照UUCode标准对文件进行快速编码(14KB) <br>4,docprops.ZIP <br>结构化存储文件接口,解压后有一个...