亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? base64.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (license2)
 * Initial Developer: H2 Group
 */
package org.h2.tools.net;

import java.util.Random;

/**
 * This class converts binary to base64 and vice versa.
 */
public class Base64 {

    private static final byte[] CODE = new byte[64];
    private static final byte[] REV = new byte[256];

    static {
        for (int i = 'A'; i <= 'Z'; i++) {
            CODE[i - 'A'] = (byte) i;
            CODE[i - 'A' + 26] = (byte) (i + 'a' - 'A');
        }
        for (int i = 0; i < 10; i++) {
            CODE[i + 2 * 26] = (byte) ('0' + i);
        }
        CODE[62] = (byte) '+';
        CODE[63] = (byte) '/';
        for (int i = 0; i < 255; i++) {
            REV[i] = -1;
        }
        for (int i = 0; i < 64; i++) {
            REV[CODE[i]] = (byte) i;
        }
    }

    private static void check(String a, String b) {
        if (!a.equals(b)) {
            throw new Error("mismatch: " + a + " <> " + b);
        }
    }

    public static void main(String[] args) {
        check(new String(encode(new byte[] {})), "");
        check(new String(encode("A".getBytes())), "QQ==");
        check(new String(encode("AB".getBytes())), "QUI=");
        check(new String(encode("ABC".getBytes())), "QUJD");
        check(new String(encode("ABCD".getBytes())), "QUJDRA==");
        check(new String(decode(new byte[] {})), "");
        check(new String(decode("QQ==".getBytes())), "A");
        check(new String(decode("QUI=".getBytes())), "AB");
        check(new String(decode("QUJD".getBytes())), "ABC");
        check(new String(decode("QUJDRA==".getBytes())), "ABCD");
        int len = 10000;
        test(false, len);
        test(true, len);
        test(false, len);
        test(true, len);
    }

    private static void test(boolean fast, int len) {
        Random random = new Random(10);
        long time = System.currentTimeMillis();
        byte[] bin = new byte[len];
        random.nextBytes(bin);
        for (int i = 0; i < len; i++) {
            byte[] dec;
            if (fast) {
                byte[] enc = encodeFast(bin);
                dec = decodeFast(enc);
            } else {
                byte[] enc = encode(bin);
                dec = decode(enc);
            }
            test(bin, dec);
        }
        time = System.currentTimeMillis() - time;
        System.out.println("fast=" + fast + " time=" + time);
    }

    private static void test(byte[] in, byte[] out) {
        if (in.length != out.length) {
            throw new Error("Length error");
        }
        for (int i = 0; i < in.length; i++) {
            if (in[i] != out[i]) {
                throw new Error("Error at " + i);
            }
        }
    }

    public static byte[] encode(byte[] bin) {
        byte[] code = CODE;
        int size = bin.length;
        int len = ((size + 2) / 3) * 4;
        byte[] enc = new byte[len];
        int fast = size / 3 * 3, i = 0, j = 0;
        for (; i < fast; i += 3, j += 4) {
            int a = ((bin[i] & 255) << 16) + ((bin[i + 1] & 255) << 8) + (bin[i + 2] & 255);
            enc[j] = code[a >> 18];
            enc[j + 1] = code[(a >> 12) & 63];
            enc[j + 2] = code[(a >> 6) & 63];
            enc[j + 3] = code[a & 63];
        }
        if (i < size) {
            int a = (bin[i++] & 255) << 16;
            enc[j] = code[a >> 18];
            if (i < size) {
                a += (bin[i] & 255) << 8;
                enc[j + 2] = code[(a >> 6) & 63];
            } else {
                enc[j + 2] = (byte) '=';
            }
            enc[j + 1] = code[(a >> 12) & 63];
            enc[j + 3] = (byte) '=';
        }
        return enc;
    }

    public static byte[] encodeFast(byte[] bin) {
        byte[] code = CODE;
        int size = bin.length;
        int len = ((size * 4) + 2) / 3;
        byte[] enc = new byte[len];
        int fast = size / 3 * 3, i = 0, j = 0;
        for (; i < fast; i += 3, j += 4) {
            int a = ((bin[i] & 255) << 16) + ((bin[i + 1] & 255) << 8) + (bin[i + 2] & 255);
            enc[j] = code[a >> 18];
            enc[j + 1] = code[(a >> 12) & 63];
            enc[j + 2] = code[(a >> 6) & 63];
            enc[j + 3] = code[a & 63];
        }
        if (i < size) {
            int a = (bin[i++] & 255) << 16;
            enc[j] = code[a >> 18];
            if (i < size) {
                a += (bin[i] & 255) << 8;
                enc[j + 2] = code[(a >> 6) & 63];
            }
            enc[j + 1] = code[(a >> 12) & 63];
        }
        return enc;
    }

    public static byte[] trim(byte[] enc) {
        byte[] rev = REV;
        int j = 0, size = enc.length;
        if (size > 1 && enc[size - 2] == '=') {
            size--;
        }
        if (size > 0 && enc[size - 1] == '=') {
            size--;
        }
        for (int i = 0; i < size; i++) {
            if (rev[enc[i] & 255] < 0) {
                j++;
            }
        }
        if (j == 0) {
            return enc;
        }
        byte[] buff = new byte[size - j];
        for (int i = 0, k = 0; i < size; i++) {
            int x = enc[i] & 255;
            if (rev[x] >= 0) {
                buff[k++] = (byte) x;
            }
        }
        return buff;
    }

    public static byte[] decode(byte[] enc) {
        enc = trim(enc);
        byte[] rev = REV;
        int len = enc.length, size = (len * 3) / 4;
        if (len > 0 && enc[len - 1] == '=') {
            size--;
            if (len > 1 && enc[len - 2] == '=') {
                size--;
            }
        }
        byte[] bin = new byte[size];
        int fast = size / 3 * 3, i = 0, j = 0;
        for (; i < fast; i += 3, j += 4) {
            int a = (rev[enc[j] & 255] << 18) + (rev[enc[j + 1] & 255] << 12) +
                    (rev[enc[j + 2] & 255] << 6) + rev[enc[j + 3] & 255];
            bin[i] = (byte) (a >> 16);
            bin[i + 1] = (byte) (a >> 8);
            bin[i + 2] = (byte) a;
        }
        if (i < size) {
            int a = (rev[enc[j] & 255] << 10) + (rev[enc[j + 1] & 255] << 4);
            bin[i++] = (byte) (a >> 8);
            if (i < size) {
                a += rev[enc[j + 2] & 255] >> 2;
                bin[i] = (byte) a;
            }
        }
        return bin;
    }

    public static byte[] decodeFast(byte[] enc) {
        byte[] rev = REV;
        int len = enc.length, size = (len * 3) / 4;
        byte[] bin = new byte[size];
        int fast = size / 3 * 3, i = 0, j = 0;
        for (; i < fast; i += 3, j += 4) {
            int a = (rev[enc[j] & 255] << 18) + (rev[enc[j + 1] & 255] << 12) +
                    (rev[enc[j + 2] & 255] << 6) + rev[enc[j + 3] & 255];
            bin[i] = (byte) (a >> 16);
            bin[i + 1] = (byte) (a >> 8);
            bin[i + 2] = (byte) a;
        }
        if (i < size) {
            int a = (rev[enc[j] & 255] << 10) + (rev[enc[j + 1] & 255] << 4);
            bin[i++] = (byte) (a >> 8);
            if (i < size) {
                a += rev[enc[j + 2] & 255] >> 2;
                bin[i] = (byte) a;
            }
        }
        return bin;
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱国产乱300精品| eeuss鲁片一区二区三区| 精品亚洲成a人| 成人a级免费电影| 欧美一个色资源| 亚洲欧美日韩在线| 久久se精品一区二区| 99re8在线精品视频免费播放| 欧美人妇做爰xxxⅹ性高电影 | 99精品欧美一区| 欧美一级理论性理论a| 亚洲欧美另类小说视频| 国产一区二区视频在线| 欧美精品成人一区二区三区四区| 国产午夜精品福利| 老司机午夜精品| 精品视频免费在线| 亚洲欧美日韩国产手机在线 | 欧美麻豆精品久久久久久| 国产精品久久久久久久久果冻传媒| 免费在线观看视频一区| 欧美在线免费播放| 亚洲免费观看高清完整版在线| 极品少妇xxxx偷拍精品少妇| 7777精品久久久大香线蕉| 一区二区三区中文字幕| av午夜精品一区二区三区| 国产香蕉久久精品综合网| 久久疯狂做爰流白浆xx| 欧美一区午夜视频在线观看| 午夜伦欧美伦电影理论片| 91久久线看在观草草青青| 亚洲欧美在线视频| 成人午夜看片网址| 欧美激情艳妇裸体舞| 国产suv精品一区二区6| 国产日韩av一区二区| 国内精品嫩模私拍在线| 欧美mv和日韩mv的网站| 精品一区二区免费视频| 精品国产一二三区| 国产精品一区专区| 国产视频一区二区在线观看| 国产丶欧美丶日本不卡视频| 久久午夜色播影院免费高清 | 六月丁香综合在线视频| 欧美成人伊人久久综合网| 黄色日韩三级电影| 久久精品免视看| 成人av资源站| 亚洲精品久久嫩草网站秘色| 欧美三电影在线| 日韩制服丝袜先锋影音| 欧美大片国产精品| 国产成人免费视频一区| 自拍偷拍欧美激情| 欧美三级资源在线| 伦理电影国产精品| 国产精品视频在线看| 91久久精品一区二区三| 日韩av电影免费观看高清完整版| 精品嫩草影院久久| 成人激情小说网站| 亚洲国产欧美一区二区三区丁香婷| 5858s免费视频成人| 国产精品一二二区| 亚洲码国产岛国毛片在线| 欧美精品色一区二区三区| 国产在线看一区| 亚洲天堂成人网| 日韩一区二区精品葵司在线| 成人污污视频在线观看| 亚洲一区二区美女| 日韩午夜电影在线观看| 国精品**一区二区三区在线蜜桃| 国产精品日日摸夜夜摸av| 欧美麻豆精品久久久久久| 国产成人h网站| 亚洲444eee在线观看| 亚洲国产成人在线| 911精品产国品一二三产区| 国产成人av电影在线观看| 亚洲综合另类小说| 国产亲近乱来精品视频| 欧美日韩国产一区| 成人黄色国产精品网站大全在线免费观看| 亚洲一二三四区不卡| 久久综合狠狠综合久久激情| 欧美性色黄大片手机版| 成人精品在线视频观看| 免费三级欧美电影| 亚洲一区在线观看视频| 日本一区二区电影| 日韩你懂的在线观看| 欧洲精品一区二区| 成人午夜激情在线| 国产毛片精品国产一区二区三区| 亚洲国产乱码最新视频 | 欧美a一区二区| 亚洲免费观看高清完整| 国产亚洲精久久久久久| 日韩免费高清电影| 欧美久久久久久久久| 色播五月激情综合网| av在线不卡观看免费观看| 精品在线视频一区| 奇米色一区二区三区四区| 一区二区欧美视频| 亚洲人精品午夜| 国产精品视频在线看| 国产午夜一区二区三区| 精品国产123| 日韩欧美在线影院| 欧美一区二区人人喊爽| 欧美色爱综合网| 欧洲一区在线观看| 在线亚洲免费视频| 在线观看91精品国产入口| 99久久免费视频.com| a美女胸又www黄视频久久| 国产91精品欧美| 成人午夜av在线| av网站免费线看精品| 91伊人久久大香线蕉| 99久久综合精品| 色综合视频一区二区三区高清| 99久久久国产精品| 色欧美乱欧美15图片| 91国产视频在线观看| 欧美午夜不卡视频| 欧美日韩国产精品自在自线| 欧美日本乱大交xxxxx| 91麻豆精品国产无毒不卡在线观看| 91麻豆精品国产91久久久使用方法| 4438亚洲最大| 日韩欧美电影在线| 国产三级一区二区三区| 国产欧美一区二区精品性 | 日韩一区二区中文字幕| 欧美成人福利视频| 日本一区二区不卡视频| 成人欧美一区二区三区小说| 亚洲香肠在线观看| 久久99国产精品久久| 国产在线不卡一卡二卡三卡四卡| 国产a视频精品免费观看| 91在线你懂得| 欧美精品黑人性xxxx| 久久日一线二线三线suv| 中文字幕中文字幕一区二区| 亚洲成av人影院| 国产一区二区三区四区五区美女 | 99久久综合99久久综合网站| 91激情在线视频| 日韩欧美国产不卡| 亚洲少妇30p| 免费精品视频在线| 成人av影院在线| 91精品国产综合久久福利| 久久久久久久久99精品| 一区二区三区**美女毛片| 老司机精品视频在线| 不卡在线观看av| 7878成人国产在线观看| 中文字幕精品三区| 日韩精品电影一区亚洲| 高清国产一区二区| 制服丝袜成人动漫| 亚洲男人天堂av| 国产一区在线不卡| 欧美精品久久99| 中文字幕一区三区| 激情综合色播激情啊| 欧美日韩中文一区| 中文一区一区三区高中清不卡| 日韩制服丝袜av| 在线一区二区观看| 中文字幕欧美区| 久久精品噜噜噜成人av农村| 国产欧美日韩精品在线| 亚洲va欧美va国产va天堂影院| 丁香桃色午夜亚洲一区二区三区| 91精品欧美一区二区三区综合在| 国产精品午夜春色av| 久久99国产精品免费| 精品视频在线视频| 亚洲三级免费观看| 国产精品综合视频| 日韩精品一区二区三区视频| 亚洲国产成人高清精品| 色国产综合视频| 中文字幕欧美一| 成人黄色免费短视频| 久久影院午夜论| 精品在线观看免费| 欧美一级欧美一级在线播放| 天天色 色综合| 欧美日本一区二区三区四区| 亚洲黄色性网站| 日本精品一区二区三区高清|