博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python[练习题]:实现Base64编码
阅读量:4568 次
发布时间:2019-06-08

本文共 1421 字,大约阅读时间需要 4 分钟。

要求自己实现算法,不用库。

Base64简介:

Base64是一种用64个字符来表示任意二进制数据的方法。

用记事本打开exejpgpdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。

转码过程例子:

3*8=4*6

内存1个字节占8位

转前: s 1 3

先转成ascii:对应 115 49 51

2进制: 01110011 00110001 00110011

6个一组(4组) 011100110011000100110011

然后才有后面的 011100 110011 000100 110011

然后计算机是8位8位的存数 6不够,自动就补两个高位0了

所有有了 高位补0

科学计算器输入 00011100 00110011 00000100 00110011

Python实现Base64

1 alphabet=b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"  2 def base64(src):  3     ret = bytearray()  4     length = len(src)  5     # r记录补0的个数  6     r = 0  7     for offset in range(0, length,3):  8         if offset + 3 <= length:  9             triple = src[offset:offset+3] 10         else: 11             triple = src[offset:] 12             r = 3 - len(triple) 13             triple = triple + '\x00'*r 14  15         print(triple.encode(),r) 16         b = int.from_bytes(triple.encode(), 'big') 17  18         for i in range(18, -1, -6): 19             if i == 18: 20                 index = b >> i 21             else: 22                 index = b >>i & 0x3F 23             ret.append(alphabet[index]) 24  25         for i in range(1,r+1): 26             ret[-i] = 0x3D 27     return ret 28  29 print(base64('abcde')) 30 import base64 31 print(base64.b64encode('abcde'.encode())) 32
Python实现Base64

转载于:https://www.cnblogs.com/bolenzhang/p/8366365.html

你可能感兴趣的文章
面向对象(五)
查看>>
android平台下使用点九PNG技术
查看>>
Python学习3,列表
查看>>
最长回文子串
查看>>
JAVA基础-JDBC(一)
查看>>
js中for和while运行速度比较
查看>>
算法第5章作业
查看>>
7.9 练习
查看>>
基于ArcGIS JS API的在线专题地图实现
查看>>
learnByWork
查看>>
lua 函数
查看>>
Git的基本命令
查看>>
四平方和
查看>>
第十八周 12.27-1.2
查看>>
C# IP地址字符串和数值转换
查看>>
TCHAR和CHAR类型的互转
查看>>
常用界面布局
查看>>
C语言—— for 循环
查看>>
IBM lotus9.0测试版即将公测
查看>>
xml常用方法
查看>>