获取编码的分隔符
我们解码的时候使用gbk格式
readpath=r"C:\Users\Tsinghua-yincheng\Desktop\yinchengDay4\nasa.txt"
readfile=open(readpath,"rb") #二进制无需忽略错误,没有解码
mylist=readfile.readlines()
for line in mylist:
print(line)
line=line.decode("gbk",errors="ignore")#手动解码
print(line) #‘\t’
readfile.close()
编码解码
每一个单词或者文字都有着自己的码,25015就代表着我这个字符,x64代表着十六位6*16+4=100,因此我们能看到代码里\x64代表着d因为d的码值为100
'''
ch='我'
print(ord(ch)) #每一个字符(不仅英文字符,包含汉字)都有一个编号,
print(chr(25105))#每一个编号对应一个字符,
'''
# 15=1*10+5
x64=6*16+4
print(ord('d'))
myb=b"adcd\x64"
print(myb)
print(type(myb)) #<class 'bytes'>二进制类型
print(len(myb))
print(myb[0]) #取出编号
#myb[0]=65 #不能对于元素赋值
#65=4*16+1
myb=b"\x41BCDEFG"
print(myb)
#bytes数据类型
#二进制
#16进制存储 2^4=16
#\x41十六进制的编号,对应一个字符
#484
#显示bytes数据只会显示字符,显示单个元素显示编号
编码问题
我们在编码的时候会遇到翻译方式不对的问题,可以使用errors=“ignore”
mystr="锄禾日当午,地雷埋下土,海鹏来跳舞,炸成250"
print(mystr)
print(mystr.encode("utf-8")) #encode ,字符串处理为二进制,编码翻译方式,
print(mystr.encode("gbk"))
print(mystr.encode("gbk").decode("gbk",errors="ignore"))
print(mystr.encode("gbk").decode("utf-8",errors="ignore"))
很清楚的能看到这一行话被先编码了,我们去解码的时候发现,前后不对仗时会发生错误
整数进制
这是一个小问题,关于进制的
#num=11 #1*10^1+1*10^0
#num=0b11 #1*2^1+1*2^0
#num=0o11 #1*8^1+1*8^0
#num=0x11 #1*16^1+1*16^0
#num=0o82 #10 0-9 #0-7 #0-1
num=0xF #0-15 A=10,B=11,C=12,D=13 E=14 F=15
print(num)
我们可以发现十进制、二进制、八进制、十六进制
加密解密的原理
'''
ch='A'
print(chr(ord(ch)+1))
ch='B'
print(chr(ord(ch)-1))
'''
ch='我'
print(chr(ord(ch)+1))
ch='戒'
print(chr(ord(ch)-1))
其实能看出来就是在码值上加一,那么我们实现一个文本的加密就是每一行读取时给他的码值加一。
readfilepath="C:\\Users\\Tsinghua-yincheng\\Desktop\\yinchengDay4\\nasa.txt"
writefilepath="C:\\Users\\Tsinghua-yincheng\\Desktop\\yinchengDay4\\nasajia.txt"
readfile=open(readfilepath,"r",errors="ignore")
writefile=open(writefilepath,"w",errors="ignore")
while True:
ch=readfile.read(1)#读取一个字符
if not ch: #读取到最后
break
else:
jiach=chr(ord(ch)+1) #加密
print(jiach)
writefile.write(jiach)#写入
readfile.close()
writefile.close()
那么解密就是在原先基础上减一即可
readfilepath="C:\\Users\\Tsinghua-yincheng\\Desktop\\yinchengDay4\\nasajia.txt"
writefilepath="C:\\Users\\Tsinghua-yincheng\\Desktop\\yinchengDay4\\nasajie.txt"
readfile=open(readfilepath,"r",errors="ignore")
writefile=open(writefilepath,"w",errors="ignore")
while True:
ch=readfile.read(1)#读取一个字符
if not ch: #读取到最后
break
else:
jiach=chr(ord(ch)-1) #加密
print(jiach)
writefile.write(jiach)#写入
readfile.close()
writefile.close()