当前位置: 首页 > news >正文

一文读懂Base64

这几天在和第三方交互的时候,对方返回的数据是base64格式的数据,所以这两天又彻底捋了下Base64的来龙去脉。之前看过一篇文章说的非常好(再找到给加上链接),我在这不详细说明了,只说转换过程。

还是使用中文“爸”来举例说明,在之前的文章“一文彻底搞懂计算机中文编码”和“一文读懂UTF-8的编码规则”已了解到“爸”使用GBK编码后数据为“B0D6(10110000 11010110)”,使用utf-8编码数据为“E 7 8 8 B 8(1110 0111 1000 1000 1011 1000)”。

前边我们已经有了测试数据,那么Base64编码规则如下:
就是包括小写字母a-z、大写字母A-Z、数字0-9、符号"+“、”/"一共64个字符的字符集,(任何符号都可以转换成这个字符集中的字符,这个转换过程就叫做base64编码。
在这里插入图片描述
Base64 编码的字符索引表如下所示:
在这里插入图片描述
B0D6(10110000 11010110)转换过程如下:

步骤数据数据数据数据
先按每6位分组:101100001101011000
高位补00:001011000000110100011000
转换成十进制:441324
索引映射字符:sNY
编码后数据:sNY=

像上边不够24位,只有16位,name最后一个四位低位同样补"00",剩下的一个字节用“=”补齐。

E 7 8 8 B 8(1110 0111 1000 1000 1011 1000)转换过程如下:

步骤数据数据数据数据
先按每6位分组:111001111000100010111000
高位补00:00111001001110000010001000111000
转换成十进制:57563456
索引映射字符:54i4
编码后数据:54i4

验证程序:

    String str = "爸";System.out.println(Base64.encode(str.getBytes("gb2312")));System.out.println(Base64.encode(str.getBytes("utf-8")));

运行结果如下:
在这里插入图片描述

http://www.lryc.cn/news/186319.html

相关文章:

  • CCF CSP认证 历年题目自练 Day20
  • 【Overload游戏引擎分析】从视图投影矩阵提取视锥体及overload对视锥体的封装
  • vue全局事件总线是什么?有什么用?解决了什么问题,与pinia有什么区别?
  • 【debian 12】:debian系统切换中文界面
  • es官方为我们提供的堆内存保护机制-熔断器( breaker )
  • 靶场通关记录
  • 全网最新最全的软件测试面试题
  • 如何列出 Ubuntu 和 Debian 上已安装的软件包
  • 图论---最小生成树问题
  • elementplus 时间范围选择器限制选择时间范围
  • 【网络】抓包工具Wireshark下载安装和基本使用教程
  • Metasequoia 4 水杉3D建模工具 附序列号
  • 股票杠杆交易平台排名:淘配网推荐的十大平台
  • CoreData + CloudKit 在初始化 Schema 时报错 A Core Data error occurred 的解决
  • 修炼k8s+flink+hdfs+dlink(三:安装dlink)
  • Linux 系统性能瓶颈分析(超详细)
  • kafka与zookeeper的集群
  • sqlalchemy 连接池
  • 用Blender制作YOLO目标检测器训练数据
  • c++视觉处理---均值滤波
  • QT基础入门——Qt事件(五)
  • 自学黑客方法-----(网络安全)
  • Dockerfile自定义容器
  • (5)SpringMVC处理携带JSON格式(“key“:value)请求数据的Ajax请求
  • 【iOS】——仿写计算器
  • 公安机关警务vr综合实战模拟训练提高团队合作能力
  • MySQL-1(12000字详解)
  • voc数据集格式与yolo数据集格式的区别及相互转化
  • 超详细!Android Termux上如何安装MySQL,内网穿透实现公网远程访问
  • TSNE降维学习