精易论坛

标题: 【翻译起点读书 JAVA base64 源码】与正规算法不一样哦 [打印本页]

作者: xx90    时间: 2019-6-22 12:07
标题: 【翻译起点读书 JAVA base64 源码】与正规算法不一样哦
本帖最后由 xx90 于 2019-6-22 12:27 编辑
  1. public class mybase64
  2. {
  3.         private static char sets[] = {
  4.                 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
  5.                 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
  6.                 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
  7.                 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
  8.                 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
  9.                 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
  10.                 '8', '9', '+', '/'
  11.         };

  12.         public static String encode(byte arg8[])
  13.         {
  14.                 StringBuffer v1 = new StringBuffer();
  15.                 int v2 = arg8.length;
  16.                 int v0 = 0;
  17.                 do
  18.                 {
  19.                         if (v0 >= v2)
  20.                                 break;
  21.                         int v3 = v0 + 1;
  22.                         int v4 = arg8[v0] & 0xff;
  23.                         if (v3 == v2)
  24.                         {
  25.                                 v1.append(sets[v4 >>> 2]);
  26.                                 v1.append(sets[(v4 & 3) << 4]);
  27.                                 v1.append("==");
  28.                                 break;
  29.                         }
  30.                         int v5 = v3 + 1;
  31.                         v3 = arg8[v3] & 0xff;
  32.                         if (v5 == v2)
  33.                         {
  34.                                 v1.append(sets[v4 >>> 2]);
  35.                                 v1.append(sets[(v4 & 3) << 4 | (v3 & 0xf0) >>> 4]);
  36.                                 v1.append(sets[(v3 & 0xf) << 2]);
  37.                                 v1.append("=");
  38.                                 break;
  39.                         }
  40.                         v0 = v5 + 1;
  41.                         v5 = arg8[v5] & 0xff;
  42.                         v1.append(sets[v4 >>> 2]);
  43.                         v1.append(sets[(v4 & 3) << 4 | (v3 & 0xf0) >>> 4]);
  44.                         v1.append(sets[(v3 & 0xf) << 2 | (v5 & 0xc0) >>> 6]);
  45.                         v1.append(sets[v5 & 0x3f]);
  46.                 } while (true);
  47.                 return v1.toString();
  48.         }
  49. }
复制代码

  1. package com.yuewen.ywlogin;

  2. public class d {
  3.     private static final char[] a;

  4.     static {
  5.         d.a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
  6.     }

  7.     public static String a(byte[] arg9) {
  8.         int v4 = arg9.length;
  9.         StringBuilder v5 = new StringBuilder(arg9.length * 3 / 2);
  10.         int v6 = v4 - 3;
  11.         int v2 = 0;
  12.         int v0;
  13.         for(v0 = 0; v0 <= v6; v0 = v3) {
  14.             int v3 = (arg9[v0] & 0xFF) << 16 | (arg9[v0 + 1] & 0xFF) << 8 | arg9[v0 + 2] & 0xFF;
  15.             v5.append(d.a[v3 >> 18 & 0x3F]);
  16.             v5.append(d.a[v3 >> 12 & 0x3F]);
  17.             v5.append(d.a[v3 >> 6 & 0x3F]);
  18.             v5.append(d.a[v3 & 0x3F]);
  19.             v3 = v0 + 3;
  20.             v0 = v2 + 1;
  21.             if(v2 >= 14) {
  22.                 v5.append(" ");
  23.                 v0 = 0;
  24.             }

  25.             v2 = v0;
  26.         }

  27.         if(v0 == -2 + v4) {
  28.             v0 = (arg9[v0 + 1] & 0xFF) << 8 | (arg9[v0] & 0xFF) << 16;
  29.             v5.append(d.a[v0 >> 18 & 0x3F]);
  30.             v5.append(d.a[v0 >> 12 & 0x3F]);
  31.             v5.append(d.a[v0 >> 6 & 0x3F]);
  32.             v5.append("=");
  33.         }
  34.         else if(v0 == -1 + v4) {
  35.             v0 = (arg9[v0] & 0xFF) << 16;
  36.             v5.append(d.a[v0 >> 18 & 0x3F]);
  37.             v5.append(d.a[v0 >> 12 & 0x3F]);
  38.             v5.append("==");
  39.         }

  40.         return v5.toString();
  41.     }
  42. }
复制代码



作者: 全村最帅    时间: 2019-6-22 13:27
这舒适有点剑走偏锋的味道
作者: leiwawa001    时间: 2019-6-22 13:58
看看,有点意思
作者: lolwind    时间: 2019-6-22 14:20
这舒适有点剑走偏锋的味道
作者: 零碎不堪    时间: 2019-6-22 14:39
看一下有什么区别

作者: cnxmal    时间: 2019-6-22 22:47
这舒适有点剑走偏锋的味道

作者: King丶枫岚    时间: 2019-6-23 01:47
这个有什么用
作者: 529512527    时间: 2019-6-23 18:38
支持一下谢谢???
作者: 529512527    时间: 2019-6-23 18:48
只有MyBase64编码  没有解码
作者: 格视化    时间: 2019-6-25 04:56
学习一下啊

作者: shuashen    时间: 2019-6-28 00:19
万分感谢写谢撒

作者: yanhao123    时间: 2021-4-15 21:52
有解码吗大佬
作者: 凉城o    时间: 2021-4-16 04:26
谢谢大佬分享 支持支持




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4