首页 > 其他分享 >Problem I: base64编码

Problem I: base64编码

时间:2023-04-24 19:23:12浏览次数:31  
标签:编码 src dst base64 list length Problem append

Problem Description

对于任意二进制文件(如图像、声音、视频、程序等),都可以用base64编码。
base64编码方法:先把二进制代码划分为一系列24位长的单元,然后把每一个24位单元划分为4个6位的组。每一个6位组按下列方法转换为ASCII码。6位二进制有64个不同的值,0-63。用A表示0,B表示1,等。26个大写字母排列完毕后,再用26个小写字母,然后再用10个数字,最后用+表示62,用/表示63。当要编码的个数不是3的倍数时,等号符“=”被用作填充符。
例如:
24位二进制代码:01001001 00110001 01111001
划分为4个6位组:010010 010011 000101 111001
对应的base64编码:  S          T          F          5
对应的base64编码的二进制代码:01010011 01010100 01000110 00110101

Input Description

输入一篇文本。长度不超过10000个字符。

Output Description

输出编码后的文本。

Sample Input

#include <stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a, &b);
    printf("%d\n",a+b);
    return 0;
}

Sample Output

I2luY2x1ZGUgPHN0ZGlvLmg+CmludCBtYWluKCkKewogICAgaW50IGEsYjsKICAgIHNjYW5mKCIlZCAlZCIsJmEsICZiKTsKICAgIHByaW50ZigiJWRcbiIsYStiKTsKICAgIHJldHVybiAw

 1 def read_in():
 2     list = []
 3     while True:
 4         try:
 5             line = input()
 6         except EOFError:
 7             break
 8         list.append(line)
 9         list.append("\n")
10 
11     src = "".join(list)
12     return src
13 
14 
15 def base_64(src):
16     keystr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
17 
18     src = list(src)
19     length = len(src)
20     if length % 3 != 0:
21         if length % 3 == 1:
22             src.append("=")
23             src.append("=")
24             length += 2
25         else:
26             src.append("=")
27             length += 1
28 
29     src = list(map(ord, src))
30     i = 0
31     dst = []
32     while i < length:
33         ch1 = src[i]
34         i += 1
35         ch2 = src[i]
36         i += 1
37         ch3 = src[i]
38         i += 1
39 
40         ench1 = ch1 >> 2
41         ench2 = ((ch1 & 3) << 4) | (ch2 >> 4)
42         ench3 = ((ch2 & 15) << 2) | (ch3 >> 6)
43         ench4 = ch3 & 63
44 
45         dst.append(keystr[ench1])
46         dst.append(keystr[ench2])
47         dst.append(keystr[ench3])
48         dst.append(keystr[ench4])
49 
50     dst = "".join(dst)
51     return dst
52 
53 
54 if __name__ == "__main__":
55     str = read_in()
56     ans = base_64(str)
57     print(ans)

 

 

标签:编码,src,dst,base64,list,length,Problem,append
From: https://www.cnblogs.com/hangsingplus/p/17350580.html

相关文章

  • Problem D: IP地址合法性和网络类别检查
    1defIslegal(a):2ip=list(map(int,a))3flag=0#标志是否合法4if0<=ip[0]<=255:5if0<=ip[1]<=255:6if0<=ip[2]<=255:7if0<=ip[3]<=255:8......
  • Problem E: 计算网络地址
    1defcalculate(m,n):2ans=[]3a=m.split('.',3)4b=n.split('.',3)5ip=list(map(int,a))6mask=list(map(int,b))7foriinrange(4):8x=ip[i]&mask[i]9ans.append......
  • AtCoder Problem Difficulty
    ABC299之前.......
  • AtCoder Regular Contest 111 F Do you like query problems?
    洛谷传送门AtCoder传送门挺有意思的计数。计数感觉很难做,不妨转成期望,期望又可以转成概率之和。考虑枚举\(w\in[0,m-1]\),把\(>w\)的数设为\(1\),\(\lew\)的数设为\(0\)。那么期望就是所有\(w\),\(a_i\)为\(1\)的概率之和。对于一个\(i\),只有以下的操作能改变\(......
  • 程序猿之编码格式
    为什么要编码?这是全网讲解最好的文章:https://zhuanlan.zhihu.com/p/427488961https://zhuanlan.zhihu.com/p/46216008https://blog.csdn.net/qq_23274715/article/details/104931433......
  • 长文本摘要模型的位置编码
    LongformerRoberta使用绝对位置编码,最大512.为了能够适应更长的文本,Longformer添加到4096。为了利用Roberta的预训练后的权重,多次复制512位置编码。做了实验,对比随机初始化位置编码和复制位置编码,显示出复制位置编码的重要性。扩展BART的1Ktokens到16Ktokens。初始化位置......
  • 使用encoder编码器-decoder解码器加GAN网络的生成式图像修复
    论文链接https://openaccess.thecvf.com/content_cvpr_2016/papers/Pathak_Context_Encoders_Feature_CVPR_2016_paper.pdf简介作者提出了一种基于上下文像素预测的无监督视觉特征学习算法,它既完成了特征提取,也完成了图像修复。通过与自动编码器的类比,提出了上下文编码器(Conte......
  • Access restriction: The type BASE64Decoder is not accessible due to restr[转]
    在Eclipse中编写用java代码时用到了BASE64Decoder,importsun.misc.BASE64Decoder;可是Eclipse提示:Accessrestriction:ThetypeBASE64DecoderisnotaccessibleduetorestrictiononrequiredlibraryC:\Programfiles\java\jre6\lib\rt.jarAcces......
  • redis linux下安装 redis启动方式 redis典型场景 redis通用命令 数据结构和内部编码 r
    内容回顾#dockerfile命令 RUNCOPYADDENVEXPOSEWORKDIRCMD:可以用新命令覆盖的ENTRYPOINT:不可以被覆盖#容器要运行,必须有个前台进程#dockerfile部署图书管理系统项目 FROMpython:3.8MAINTAINERlqzWORKDIR/soft......
  • 火花塞型号怎么看图解(火花塞编码规则)
    https://www.xhyflower.com/13386.htmlNGK火花塞型号:NGK火花塞型号的读取,需要借助官方的型号编码规则表,NGK有传统型号编码规则表、新型号编码规则表,大多数传统型号和镍合金火花塞通过传统型号编码规则表读取,大部分最新型号和贵金属火花塞通过新型号编码规则表读取。其实NGK原......