本帖最后由 xx90 于 2019-6-22 12:27 编辑
- public class mybase64
- {
- private static char sets[] = {
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
- 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
- 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
- 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
- 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
- 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', '+', '/'
- };
- public static String encode(byte arg8[])
- {
- StringBuffer v1 = new StringBuffer();
- int v2 = arg8.length;
- int v0 = 0;
- do
- {
- if (v0 >= v2)
- break;
- int v3 = v0 + 1;
- int v4 = arg8[v0] & 0xff;
- if (v3 == v2)
- {
- v1.append(sets[v4 >>> 2]);
- v1.append(sets[(v4 & 3) << 4]);
- v1.append("==");
- break;
- }
- int v5 = v3 + 1;
- v3 = arg8[v3] & 0xff;
- if (v5 == v2)
- {
- v1.append(sets[v4 >>> 2]);
- v1.append(sets[(v4 & 3) << 4 | (v3 & 0xf0) >>> 4]);
- v1.append(sets[(v3 & 0xf) << 2]);
- v1.append("=");
- break;
- }
- v0 = v5 + 1;
- v5 = arg8[v5] & 0xff;
- v1.append(sets[v4 >>> 2]);
- v1.append(sets[(v4 & 3) << 4 | (v3 & 0xf0) >>> 4]);
- v1.append(sets[(v3 & 0xf) << 2 | (v5 & 0xc0) >>> 6]);
- v1.append(sets[v5 & 0x3f]);
- } while (true);
- return v1.toString();
- }
- }
复制代码 变量名 | 类 型 | 静态 | 数组 | 备 注 | v4 | 整数型 | | | v1 | 文本型 | | | sets | 文本型 | | | v2 | 整数型 | | | v0 | 整数型 | | | v3 | 整数型 | | | v5 | 整数型 | | |
sets = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”v2 = 取字节集长度 (arg8 )v0 = 1 循环判断首 () 如果真 (v0 ≥ v2 ) 跳出循环 () v3 = v0 + 1 v4 = 位与 (arg8 [v0 ], 255 ) 如果真 (v3 = v2 )     v1 = v1 + 字符 (取代码 (sets, 无符号右移汇编版 (v4, 2 ) + 1 ))   v1 = v1 + 字符 (取代码 (sets, 左移 (位与 (v4, 3 ), 4 ) + 1 ))   v1 = v1 + “==” 跳出循环 () v5 = v3 + 1 v3 = 位与 (arg8 [v3 ], 255 ) 如果真 (v5 = v2 )      v1 = v1 + 字符 (取代码 (sets, 无符号右移汇编版 (v4, 2 ) + 1 ))   v1 = v1 + 字符 (取代码 (sets, 位或 (左移 (位与 (v4, 3 ), 4 ), 无符号右移汇编版 (位与 (v3, 240 ), 4 )) + 1 ))   v1 = v1 + 字符 (取代码 (sets, 左移 (位与 (v3, 15 ), 2 ) + 1 ))   v1 = v1 + “=” 跳出循环 ()
 v0 = v5 + 1  v5 = 位与 (arg8 [v5 ], 255 ) v1 = v1 + 字符 (取代码 (sets, 无符号右移汇编版 (v4, 2 ) + 1 ))  v1 = v1 + 字符 (取代码 (sets, 位或 (左移 (位与 (v4, 3 ), 4 ), 无符号右移汇编版 (位与 (v3, 240 ), 4 )) + 1 ))  v1 = v1 + 字符 (取代码 (sets, 位或 (左移 (位与 (v3, 15 ), 2 ), 无符号右移汇编版 (位与 (v5, 192 ), 6 )) + 1 ))  v1 = v1 + 字符 (取代码 (sets, 位与 (v5, 63 ) + 1 )) 循环判断尾 (真)返回 (v1 )|
无符号右移 | 整数型 | | |
欲移动的整数 | 整数型 | | | | 欲移动的位数 | 整数型 | | | |
C = 右移 (2147483647, 欲移动的位数 - 1 )返回 (位与 (C, 右移 (欲移动的整数, 欲移动的位数 )) )|
无符号右移汇编版 | 整数型 | | |
欲移动的整数 | 整数型 | | | | 欲移动的位数 | 整数型 | | | | 置入代码 ({ 81, 139, 69, 8, 138, 77, 12, 211, 232, 89, 139, 229, 93, 194, 8, 0 })返回 (0 )
- package com.yuewen.ywlogin;
- public class d {
- private static final char[] a;
- static {
- d.a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
- }
- public static String a(byte[] arg9) {
- int v4 = arg9.length;
- StringBuilder v5 = new StringBuilder(arg9.length * 3 / 2);
- int v6 = v4 - 3;
- int v2 = 0;
- int v0;
- for(v0 = 0; v0 <= v6; v0 = v3) {
- int v3 = (arg9[v0] & 0xFF) << 16 | (arg9[v0 + 1] & 0xFF) << 8 | arg9[v0 + 2] & 0xFF;
- v5.append(d.a[v3 >> 18 & 0x3F]);
- v5.append(d.a[v3 >> 12 & 0x3F]);
- v5.append(d.a[v3 >> 6 & 0x3F]);
- v5.append(d.a[v3 & 0x3F]);
- v3 = v0 + 3;
- v0 = v2 + 1;
- if(v2 >= 14) {
- v5.append(" ");
- v0 = 0;
- }
- v2 = v0;
- }
- if(v0 == -2 + v4) {
- v0 = (arg9[v0 + 1] & 0xFF) << 8 | (arg9[v0] & 0xFF) << 16;
- v5.append(d.a[v0 >> 18 & 0x3F]);
- v5.append(d.a[v0 >> 12 & 0x3F]);
- v5.append(d.a[v0 >> 6 & 0x3F]);
- v5.append("=");
- }
- else if(v0 == -1 + v4) {
- v0 = (arg9[v0] & 0xFF) << 16;
- v5.append(d.a[v0 >> 18 & 0x3F]);
- v5.append(d.a[v0 >> 12 & 0x3F]);
- v5.append("==");
- }
- return v5.toString();
- }
- }
复制代码 变量名 | 类 型 | 静态 | 数组 | 备 注 | v4 | 整数型 | | | v5 | 文本型 | | | chaptasets | 文本型 | | | v6 | 整数型 | | | v2 | 整数型 | | | v0 | 整数型 | | | v3 | 整数型 | | | i | 整数型 | | |
chaptasets = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”v4 = 取字节集长度 (arg9 )v6 = v4 - 2 v2 = 1 v0 = 1 判断循环首 (v0 ≤ v6 ) v3 = 位或 (左移 (位与 (arg9 [v0 ], 255 ), 16 ), 左移 (位与 (arg9 [v0 + 1 ], 255 ), 8 ), 位与 (arg9 [v0 + 2 ], 255 ))  v5 = v5 + 字符 (取代码 (chaptasets, 位与 (右移 (v3, 18 ), 63 ) + 1 ))  v5 = v5 + 字符 (取代码 (chaptasets, 位与 (右移 (v3, 12 ), 63 ) + 1 ))  v5 = v5 + 字符 (取代码 (chaptasets, 位与 (右移 (v3, 6 ), 63 ) + 1 ))  v5 = v5 + 字符 (取代码 (chaptasets, 位与 (v3, 63 ) + 1 ))  v3 = v0 + 3  v0 = v2 + 1  如果真 (v2 ≥ 15 )  v5 = v5 + “ ”  v0 = 1 v2 = v0 v0 = v3 判断循环尾 () 判断 (v0 = -1 + v4 ) v0 = 位或 (左移 (位与 (arg9 [v0 + 1 ], 255 ), 8 ), 左移 (位与 (arg9 [v0 ], 255 ), 16 ))  v5 = v5 + 字符 (取代码 (chaptasets, 位与 (右移 (v0, 18 ), 63 ) + 1 ))  v5 = v5 + 字符 (取代码 (chaptasets, 位与 (右移 (v0, 12 ), 63 ) + 1 ))  v5 = v5 + 字符 (取代码 (chaptasets, 位与 (右移 (v0, 6 ), 63 ) + 1 ))  v5 = v5 + “=” 判断 (v0 = v4 ) v0 = 左移 (位与 (arg9 [v0 ], 255 ), 16 ) v5 = v5 + 字符 (取代码 (chaptasets, 位与 (右移 (v0, 18 ), 63 ) + 1 ))  v5 = v5 + 字符 (取代码 (chaptasets, 位与 (右移 (v0, 12 ), 63 ) + 1 ))  v5 = v5 + “==” 返回 (v5)
|