Base64编码工具类

2023-11-14

public class Base64Util {
private static final char last2byte = (char) Integer.parseInt("00000011", 2);  
    private static final char last4byte = (char) Integer.parseInt("00001111", 2);  
    private static final char last6byte = (char) Integer.parseInt("00111111", 2);  
    private static final char lead6byte = (char) Integer.parseInt("11111100", 2);  
    private static final char lead4byte = (char) Integer.parseInt("11110000", 2);  
    private static final char lead2byte = (char) Integer.parseInt("11000000", 2);  
    private static final char[] encodeTable = new char[]{'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 Base64Util() {  
    }  
  
    public static String encode(byte[] from) {  
        StringBuilder to = new StringBuilder((int) ((double) from.length * 1.34D) + 3);  
        int num = 0;  
        char currentByte = 0;  
  
        int i;  
        for (i = 0; i < from.length; ++i) {  
            for (num %= 8; num < 8; num += 6) {  
                switch (num) {  
                    case 0:  
                        currentByte = (char) (from[i] & lead6byte);  
                        currentByte = (char) (currentByte >>> 2);  
                    case 1:  
                    case 3:  
                    case 5:  
                    default:  
                        break;  
                    case 2:  
                        currentByte = (char) (from[i] & last6byte);  
                        break;  
                    case 4:  
                        currentByte = (char) (from[i] & last4byte);  
                        currentByte = (char) (currentByte << 2);  
                        if (i + 1 < from.length) {  
                            currentByte = (char) (currentByte | (from[i + 1] & lead2byte) >>> 6);  
                        }  
                        break;  
                    case 6:  
                        currentByte = (char) (from[i] & last2byte);  
                        currentByte = (char) (currentByte << 4);  
                        if (i + 1 < from.length) {  
                            currentByte = (char) (currentByte | (from[i + 1] & lead4byte) >>> 4);  
                        }  
                }  
  
                to.append(encodeTable[currentByte]);  
            }  
        }  
  
        if (to.length() % 4 != 0) {  
            for (i = 4 - to.length() % 4; i > 0; --i) {  
                to.append("=");  
            }  
        }  
  
        return to.toString();  
    } 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Base64编码工具类 的相关文章

  • pycharm使用wsl、SSH

    pycharm wsl 修改apt get源 安装miniconda 配置pycharm SSH Using the Python remote debug server configuration wsl windows sub linu
  • Python10行代码实现模拟百度搜索

    作者主页 士别三日wyx Python模拟百度搜索 1 获取百度搜索接口 2 指定搜索内容 3 UA伪装 4 将响应内容写入文件 5 使用浏览器打开页面 源码如下 1000块钱做个百度 能提出这种要求的客户实乃乙方克星 民族之光 科创永动机
  • 30个落地案例告诉你,区块链到底怎么用

    区块链的商业价值 一千个企业就有一千种解读 唯链 VeChain 起步于2015年 作为国内知名的公链项目之一 它的行事作风一直显得不太 合群 大多数公链生态所追随的热点如DAPP游戏开发 Defi Staking等等 唯链似乎都鲜少参与
  • [STL]vector常见用法详解

    目录 引入 常见用法介绍 1 vector的定义 2 vector容器内元素的访问 3 vector常用函数实例解析 1 push back 2 pop back 3 size 4 clear 5 insert 6 erase vector
  • 如果有一天程序员再也不忙了

    前言 程序员是世界上最可爱的人 正文 一 程序员是什么 二 程序员写的代码有什么用 三 程序员最本质的不同是什么 四 程序员为什么找不到妹子 五 程序员的工作究竟有多忙 六 有一天程序员不忙了会怎样 七 找不到妹子真的是因为工作忙吗 八 你
  • .NET Core 获取自定义配置文件信息

    官方文档说 引用 Microsoft AspNetCore App 元包或将包引用添加到 Microsoft Extensions Options ConfigurationExtensions 包 简而言之 直接可以获取 不用引用包了 a
  • 盖茨来了:比起去火星,地球有些事更紧迫

    2023年6月14日晚 比尔 盖茨在微博更新了一条消息 他写道 我刚降落在北京 这是我2019年以来的首次访问 盖茨基金会与中国伙伴合作应对全球健康和发展挑战已经超过15年 我非常高兴能与中国的伙伴们见面 在减少儿童死亡和贫困方面 世界取得
  • CSS层叠样式表-选择器

    1 CSS 1 特点 相同属性会覆盖 不同属性会叠加 2 引入方式 外部样式 在head标签中使用link标签引入css文件 内嵌样式 在head标签中使用style标签进行书写 行内样式 在对应标签中添加style属性 1 外部样式 W3
  • 二叉查找树实现

    package leetcode May import java util ArrayList import java util List description 二叉查找树 author qiangyuecheng date 2022 5
  • 小程序单独页面生成二维码

    给单独的小程序页面生成一个二维码 比如某个商品 1 登录小程序绑定的公众号后台 2 选择 工具 生成小程序码 输入小程序AppID 复制页面路径 截图保存完成
  • 天才中的天才—冯·诺依曼简介

    https www toutiao com i6707878069182398988 参考 数学扫地僧 冯 诺依曼 John von Neumann 1903 1957 美国数学家 原籍匈牙利 毫无疑问 冯 诺依曼是20世纪最重要的数学家之
  • 关于 Unknown column ‘xxx‘ in ‘field list‘ 的问题解决

    Unknown column xxx in field list 在开发中出现了此类报错 Error querying database Cause java sql SQLSyntaxErrorException Unknown colu
  • 怎样配置炒股用的计算机,炒股专用电脑配置

    炒股专用电脑配置 一 显卡 1 欲购六屏且囊中羞涩的股民朋友 显卡可以选择AMD的六屏显卡 为避广告嫌疑 此处便不列举具体型号了 而预算稍充足一些的便推荐更加稳定的英伟达图形工作站系列显卡 如Nvidia Quadro P620 2 对于四
  • 计算机专业 拒绝清华,2次拒绝北大邀请,获清华保送生资格,网友:清华计算机全球第一...

    原标题 2次拒绝北大邀请 获清华保送生资格 网友 清华计算机全球第一 能够获得北京大学的盛情邀请 应该是一种极大的光荣吧 更何况连高考都不用参加 可以直接入学 不过 这位高三生 却2次拒绝了北大数学系的邀请 理由是 他更喜欢计算机 最终 这

随机推荐

  • 隐马尔可夫模型(HMM)的分类

    1 遍历型 ergodic model 即每个状态都可以由任意一个状态演变而来 aij gt 0 for all i j 如图 2 left right type of HMM 每个状态只能由下标值小于当前值得状态以及其本身转移而来 即从左
  • 如何解决x盘莫名出现的msdia80.dll文件

    如何解决x盘莫名出现的msdia80 dll文件 参考文章 https zhuanlan zhihu com p 138954717
  • 在latex中如何编写方程组,并且带文字或者范围分段,以及如何使用空格使其对齐

    在latex中如何编写方程组 并且带文字或者范围分段 以及如何使用空格使其对齐 begin equation O ij t begin cases x it x oi t y it y oi t quad text Obstacles ex
  • 【卷积神经网络】卷积层,池化层,全连接层

    转于 入门PyTorch 卷积层是卷积神经网络的核心 大多数计算都是在卷积层中进行的 1 卷积层 1 1 概述 首先介绍卷积神经网络的参数 这些参数是由一些可学习的滤波器集合构成的 每个滤波器在空间上 宽度和高度 都比较小 但是深度和输入数
  • UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte

    遇到python转码问题解决方案 利用notepad进行转码 如图 转为 utf 8保存重新运行 完美解决 ps 又遇到了一个分隔符错误 只需要添加以下就可以 df pd read csv D workspace python demo 长
  • Blender基础:曲线建模基础

    1 曲线建模 曲线Curve 也称为样条 用于描绘平滑的曲线和形状 一般分为两种 贝塞尔曲线 Nurbs曲线 添加一条曲线 添加 gt 曲线 gt 贝塞尔曲线 按7 进入顶视图 按TAB 编辑曲线 选择移动工具 移动控制点或控制柄 按TAB
  • 趣事

    一 谁发明了微积分 1 一篇文献引起的巨人相搏 如果要在科学史上找出一次最重要的巨人相争 牛顿与莱布尼茨围绕微积分发明权的争论无疑是当仁不让之选 1684 年 10 月 莱比锡大学学术刊物 学术论文集 刊载了一篇名字烦琐冗长的论文 一种求极
  • Python Pandas 行数据筛选方法汇总

    Pandas 行数据筛选 一 准备数据 二 通过逻辑规则筛选 大于 小于等 三 删除重复元素 三 显示最前面 最后面的 n 行 3 1 显示前面 n 行 3 2 显示后面 n 行 四 随机抽取 4 1 随机抽取一定比例 4 2 随机抽取 n
  • 没学C++,如何从C语言丝滑过度到python【python基础万字详解】

    大家好 我是纪宁 文章将从C语言出发 深入介绍python的基础知识 也包括很多python的新增知识点详解 文章目录 1 python的输入输出 重新认识 hello world 重回那个激情燃烧的岁月 1 1 输出函数print的规则
  • 带头结点的循环链表表示队列, 并且只设一个指针指向队尾元素结点, 试编写相应的队列初始化,入队列和出队列的算法

    数据结构算法题 假设以带头结点的循环链表表示队列 并且只设一个指针指向队尾元素结点 注意不设头指针 试编写相应的队列初始化 入队列和出队列的算法 数据结构算法题 假设以带头结点的循环链表表示队列 并且只设一个指针指向队尾元素结点 注意不设头
  • 在Linux系统下用dd命令制作ISO镜像U盘启动盘

    首先在 Linux 系统中打开终端 确认 U 盘路径 sudo fdisk l 格式化 U 盘 为了格式化首先需要 umount U 盘 dev sdb 是我的 U 盘设备 sudo umount dev sdb 格式化 U 盘 sudo
  • flutter 页面导航和返回

    记录一下自己的学习过程 一般页面导航和返回 导航的使用在任何程序里都至关重要 这也是一个程序的灵魂 ElevatedButton 按钮控件 它有两个最基本的属性 child 可以放入容器 图标 文字 让你构建多彩的按钮 onPressed
  • MFC中CString与string的转换

    MFC中CString与string的转换 Unicode下 CString sz1 L abc std string sz2 CT2A sz1 GetBuffer 转化为非unicode 方法一 CString theCStr std s
  • python划分训练集和测试集_python-根据时间戳将数据分为训练集和测试集

    在很多python任务中 我们需要将原始数据进行处理 分成训练集和测试集 以便更深层次的运用这些数据 工具 原料 pycharm python3 7 win10 7 方法 步骤 1 首先需要指定编码方式为 utf8 格式 再导入处理数据的包
  • Mysql详细学习指南(超详细)

    文章目录 数据库MySQL 一 数据库的概念 1 1 现阶段数据存放方式 1 2 现有方式的缺点 1 3 新的文件类型 1 4 分类 1 5 数据库管理系统 二 MySQL 2 1 简介 2 2 目录 2 3 核心文件 三 SQL语言 四
  • python3 Excel转txt

    使用场景 每次都是点一下Excel表格链接 调到浏览器中 内容数据也多 这种机械的活 对于程序员来说 能省则省 最后的结果 附上代码 coding utf 8 Time 2018 7 19 19 47 Author 蛇崽 Email 643
  • C#笔记(1)--->基本语法 [运算符]

    算术运算符 即 取余数 逻辑运算符 布尔型与按位 与 或 非 异或 按位求补 与 或 字符串串联 递增与递减 这里注意一下x 与 x的区别 移位运算符 左移位 lt lt x lt lt 3 左移3位 相当与乘2的3次方 右移位 gt gt
  • 用 moment 实现获取本周、前 n 周、后 n 周开始结束日期

    本文用 moment js 实现了获取本周 前 n 周 后 n 周开始结束日期 即周一 周日日期的方法 先看代码 封装了个工具类 DateTimeUtils js 可以直接复制到项目中使用 时间日期工具类 import moment fro
  • matlab 计算协方差矩阵

    但是在有些用到协方差的算法中 分母使用了N 而不是N 1 但是由于样本很多 差别不大 gt gt v magic 3 v 8 1 6 3 5 7 4 9 2 gt gt cov v ans 7 8 1 8 16 8 1 8 7 gt gt
  • Base64编码工具类

    public class Base64Util private static final char last2byte char Integer parseInt 00000011 2 private static final char l