base64的java实现
public class BASE64 { private static final String TAG = "BASE64"; public static final byte[] encodingTable = { (byte) 'A', (byte) 'B', (byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F', (byte) 'G', (byte) 'H', (byte) 'I', (byte) 'J', (byte) 'K', (byte) 'L', (byte) 'M', (byte) 'N', (byte) 'O', (byte) 'P', (byte) 'Q', (byte) 'R', (byte) 'S', (byte) 'T', (byte) 'U', (byte) 'V', (byte) 'W', (byte) 'X', (byte) 'Y', (byte) 'Z', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f', (byte) 'g', (byte) 'h', (byte) 'i', (byte) 'j', (byte) 'k', (byte) 'l', (byte) 'm', (byte) 'n', (byte) 'o', (byte) 'p', (byte) 'q', (byte) 'r', (byte) 's', (byte) 't', (byte) 'u', (byte) 'v', (byte) 'w', (byte) 'x', (byte) 'y', (byte) 'z', (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) '+', (byte) '/' }; public static final byte[] decodingTable; static { decodingTable = new byte[128]; for (int i = 0; i < 128; ++i) { decodingTable[i] = (byte) -1; } for (int i = 'A'; i <= 'Z'; ++i) { decodingTable[i] = (byte) (i - 'A'); } for (int i = 'a'; i <= 'z'; ++i) { decodingTable[i] = (byte) (i - 'a' + 26); } for (int i = '0'; i < '9'; ++i) { decodingTable[i] = (byte) (i - '0' + 52); } decodingTable['+'] = 62; decodingTable['/'] = 63; } public static String encode(byte[] data) { if (data == null) { return ""; } byte[] base64 = null; final int remainder = data.length % 3; final int len = data.length / 3; if (remainder == 0) { base64 = new byte[len * 4]; } else { base64 = new byte[(len + 1) * 4]; } int base; int a1, a2, a3; for (int i = 0, j = 0; i < len; ++i, j += 4) { base = i * 3; a1 = data[base] & 0xff; a2 = data[base + 1] & 0xff; a3 = data[base + 2] & 0xff; base64[j] = encodingTable[(a1 >>> 2) & 0x3f]; base64[j + 1] = encodingTable[((a1 << 4) | (a2 >>> 4)) & 0x3f]; base64[j + 2] = encodingTable[((a2 << 2) | (a3 >>> 6)) & 0x3f]; base64[j + 3] = encodingTable[a3 & 0x3f]; } if (remainder == 1) { a1 = data[data.length - 1]; base64[base64.length - 4] = encodingTable[(a1 >>> 2) & 0x3f]; base64[base64.length - 3] = encodingTable[(a1 << 4) & 0x3f]; base64[base64.length - 2] = (byte) '='; base64[base64.length - 1] = (byte) '='; } else if (remainder == 2) { a1 = data[data.length - 2]; a2 = data[data.length - 1]; base64[base64.length - 4] = encodingTable[(a1 >>> 2) & 0x3f]; base64[base64.length - 3] = encodingTable[((a1 << 4) | (a2 >>> 4)) & 0x3f]; base64[base64.length - 2] = encodingTable[(a2 << 2) & 0x3f]; base64[base64.length - 1] = (byte) '='; } return new String(base64); } public static boolean isValidCharacter(byte x) { if ('=' == x) { return true; } if (x < 0 || x > 128) { return false; } if (decodingTable[x] == -1) { Logger.d(TAG, "data is not valid. decoding table x:" + x); return false; } return true; } public static String decode(byte[] data) { if (data == null) { return ""; } Logger.d(TAG, "data is not null"); for (int i = 0; i < data.length; ++i) { if (isValidCharacter(data[i]) == false) { return ""; } } Logger.d(TAG, "data is valid"); byte[] base64 = null; int len = data.length / 4; if (data[data.length - 2] == '=') { len = len - 1; base64 = new byte[len * 3 + 1]; } else if (data[data.length - 1] == '=') { len = len - 1; base64 = new byte[len * 3 + 2]; } else { base64 = new byte[len * 3]; } int base; byte a1, a2, a3, a4; for (int i = 0, j = 0; i < len; ++i, j += 3) { base = i * 4; a1 = decodingTable[data[base]]; a2 = decodingTable[data[base + 1]]; a3 = decodingTable[data[base + 2]]; a4 = decodingTable[data[base + 3]]; base64[j] = (byte) ((a1 << 2) | (a2 >>> 4)); base64[j + 1] = (byte) ((a2 << 4) | (a3 >>> 2)); base64[j + 2] = (byte) ((a3 << 6) | a4); } if (data[data.length - 2] == '=') { a1 = decodingTable[data[data.length - 4]]; a2 = decodingTable[data[data.length - 3]]; base64[base64.length - 1] = (byte) ((a1 << 2) | (a2 >>> 4)); } else if (data[data.length - 1] == '=') { a1 = decodingTable[data[data.length - 4]]; a2 = decodingTable[data[data.length - 3]]; a3 = decodingTable[data[data.length - 2]]; base64[base64.length - 2] = (byte) ((a1 << 2) | (a2 >>> 4)); base64[base64.length - 1] = (byte) ((a2 << 4) | (a3 >>> 2)); } return new String(base64); } }
android 下使用base64:
import android.util.Base64; 编码: String str = Base64.encodeToString(ori_str.getBytes(), Base64.DEFAULT); 解码: byte b[]=android.util.Base64.decode(ori_str, Base64.DEFAULT); String str=new String(b);
相关推荐
标题中的"pb9_base64_pb调用base64.dll_PB9base64_Base64.dll_glass8y6_pbbase64"涉及到的是PowerBuilder 9(简称PB9)中关于Base64编码的实现。Base64是一种用于在网络上传输二进制数据的编码方式,它将二进制数据...
在这个特定的场景中,我们关注的是如何在LabVIEW中处理图片,包括图片的缩放、Base64编码和解码。 1. **图片缩放**: 在LabVIEW中,你可以使用图像处理库来实现图片的缩放功能。这个库提供了各种图像操作函数,...
在“Base64.zip_labview base64”这个压缩包中,包含了一个名为“Base64.vi”的虚拟仪器(VI)。这个VI是用LabVIEW编写的,目的就是提供一个纯LabVIEW环境下的Base64编码解决方案。下面我们将详细探讨如何在LabVIEW...
Base64是一种在互联网上广泛使用的编码方式,它将任意二进制数据转换为可打印的ASCII字符,以便在网络传输中不受限制。这种编码方法基于一个64字符的字母数字表,包括大小写字母、数字以及"+"和"/",末尾可能带有...
Base64编码是一种常见的数据编码方式,主要用于在不支持二进制传输的环境中传递二进制数据。它将任意的二进制数据转化为ASCII字符序列,这样就可以在文本格式的邮件、网页源代码等场景中方便地使用。Base64编码会将3...
在Excel中使用VBA(Visual Basic for Applications)解码BASE64编码的图片是一项常见的编程任务,特别是当你需要处理从网络或数据库中获取的BASE64格式的图像数据时。BASE64是一种用于将二进制数据转换为可打印ASCII...
在Android开发中,有时我们需要将图片转换为Base64编码的形式以便在网络传输或者存储时使用。Base64编码是一种常见的二进制数据转化为文本的方法,它通过使用64个可打印字符来表示原本的二进制数据,使得数据可以在...
这个“VB JPG转base64和base64转JPG.rar”压缩包文件包含的可能是两个VB程序,分别用于将JPG图片编码为Base64字符串和将Base64字符串解码回JPG图片。 首先,让我们深入了解一下Base64编码的原理。Base64编码将每3个...
Base64编码和解码库,支持API调用和COM调用,输入参数支持VB的字节数组Byte(),输出支持VB的字节数组Byte()和...Public Declare Sub DecodeFromVBStringEx Lib "Base64" (ByRef Dest() As Byte, ByRef Src As String)
sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及Java源代码 sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及Java源代码 sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及...
在IT行业中,Base64是一种常见的数据编码方法,主要用于将二进制数据转换为ASCII字符串,以便在网络上传输或者存储。Base64Encoder和Base64Decoder是处理这种编码和解码过程的工具。本文将深入探讨这两个概念,以及...
Base64是一种在网络上传输和存储二进制数据时常用的数据编码方式,它将二进制数据转换为可打印的ASCII字符序列。在Java中,Base64编码主要用于处理包含二进制数据的字符串,例如图片、PDF文档或加密密钥等。Base64...
在Java中,`BASE64Encoder`和`BASE64Decoder`是两个核心类,分别用于对数据进行BASE64编码和解码。 `BASE64Encoder`类: 这个类在Java SDK中位于`javax.crypto`包下,主要负责将字节序列(byte array)转换为BASE...
在IT领域,Base64是一种广泛使用的编码方式,主要用于将二进制数据转换为可打印的ASCII字符,以便在网络上传输或存储。标题中的"BASE64Encoder.jar"表明这是一个Java应用程序,它提供了Base64编码的功能。描述中提到...
Base64是一种常见的数据编码方式,它将任意的二进制数据转换成可打印的ASCII字符串,以便在网络上传输或者存储。在JavaScript中,Base64编码和解码是经常用到的功能,尤其是在处理图像、JSON数据或者进行跨平台通信...
BASE64编码是一种常见的数据编码方式,特别是在网络通信和数据存储中广泛使用。它将任意二进制数据转换成可打印的ASCII字符序列,以便在不支持二进制传输的环境中进行传输。在这个"BASE64Encoder.zip"压缩包中包含了...
Java Base64是一个用于处理Base64编码的库,它为Java开发者提供了便捷的方式来编码和解码Base64数据。Base64是一种在网络上传输二进制数据时常用的编码方式,因为HTTP、电子邮件等协议主要处理ASCII字符,而Base64...
在IT领域,Base64是一种常见的数据编码方法,主要用于在不支持二进制传输的环境中传递数据,如电子邮件系统。C#是微软开发的一种面向对象的编程语言,广泛应用于Windows应用开发,包括WinForms应用程序。在C# ...