Base64编码与解码的java实现
public class Base64 {
//码表
static private char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
.toCharArray();
//codes里存放的是值表
//可以这么理解根据码表中的值可以得到编码前的值
//如codes['A']=0,即为其索引值
static private byte[] codes = new byte[256];
static {
for (int i = 0; i < 256; i++)
codes[i] = -1;
for (int i = 'A'; i <= 'Z'; i++)
codes[i] = (byte) (i - 'A');
for (int i = 'a'; i <= 'z'; i++)
codes[i] = (byte) (26 + i - 'a');
for (int i = '0'; i <= '9'; i++)
codes[i] = (byte) (52 + i - '0');
codes['+'] = 62;
codes['/'] = 63;
}
/**
* 将原始数据编码为base64编码
*/
static public char[] encode(byte[] data) {
//对于原文的字节数量是3的倍数的时候,转换后的字符串理论上将要比原来的长1/3,即原来的4/3.
//当原文的字节数不是3的倍数的时候,不足的地方我们补全.
//故原文补全后的最大长度为 原字符串长度+2
//编码后的长度为(原字符串长度+2)*3/4
char[] out = new char[((data.length + 2) / 3) * 4];
相关文档:
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见。
本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后, ......
UTF8转换成GB2312 当我们在基于HTTP协议的JSP或Servlet的应用中获取数据或发送请求时,JVM会把输送的数据编码成UTF8格式。如果我们直接从HTTP流中提取中文数据,提取的结果为“????”(可能更多问号),为转换成我们能够理解的中文字符,我们需要把UTF8转换成GB2312,借助ISO-8859-1标准编码能够轻易的实现,下面 ......
看过.NET基础的朋友可能对这个装箱和拆箱的概念并不陌生。首先,我们必须明确一点,在Java中,有两种截然不同的数据类型:值类型和引用类
型。值类型的数据不是对象,因而所占的内存和资源都相对较少,但是不能作为对象调用其toString()、hashCode()、
getClass()、equals()等等方法,也不能被直接加入到集合中;引用类型 ......
java中的字符串也是一连串的字符。但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理。将字符串作为内置的对象处理允许Java提供十分丰富的功能特性以方便处理字符串。下面是一些使用频率比较高的函数及其相关说明。
String相关函数
1)substring()
它有两种形式,第一种 ......
package com.test;
import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class TimeTest {
//用来 ......