二进制数据处理

获取编码的分隔符

我们解码的时候使用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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青灯有味是儿时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值