def encode(s):
#实现字符串转换成二进制表示
#字符串 -> ASCII码数值 -> 二进制表示
###str_bin = ' '.join([bin(ord(c)).replace('0b', '') for c in s]) 该代码可转换成裁开的for 循环,如下四行代码:
tmp = []
for c in s:
tmp.append(bin(ord(c)).replace('0b', ''))
str_bin = ' '.join(tmp)
print(str_bin)
def decode(s):
# 实现二进制表示转换成字符串表示
# 二进制表示 -> ASCII码数值 -> 字符串表示
bin_str = ''.join([chr(i) for i in [int(b, 2) for b in s.split(' ')]])
return bin_str
一:python中函数:string.join()
Python中有join()和os.path.join()两个函数,具体作用如下:
join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
os.path.join(): 将多个路径组合后返回
二、join()函数说明
1、join()函数
语法: 'sep'.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
2、os.path.join()函数
语法: os.path.join(path1[,path2[,......]])
返回值:将多个路径组合后返回
注:第一个绝对路径之前的参数将被忽略
三 join()函数程序例子
#对序列进行操作(分别使用' '与':'作为分隔符)
>>> seq1 = ['hello','good','boy','doiido']
>>> print ' '.join(seq1)
hello good boy doiido
>>> print ':'.join(seq1)
hello:good:boy:doiido
#对字符串进行操作
>>> seq2 = "hello good boy doiido"
>>> print ':'.join(seq2)
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o
#对元组进行操作
>>> seq3 = ('hello','good','boy','doiido')
>>> print ':'.join(seq3)
hello:good:boy:doiido
#对字典进行操作
>>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}
>>> print ':'.join(seq4)
boy:good:doiido:hello
#合并目录
>>> import os
>>> os.path.join('/hello/','good/boy/','doiido')
'/hello/good/boy/doiido'
四. Python bin() 函数
bin() 返回一个整数 int 或者长整数 long int 的二进制表示
>>>bin(10)
'0b1010'
>>> bin(20)
'0b10100'
五. Python ord() 函数
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
ord()函数的返回值是对应的十进制整数。
>>>ord('a')
97
>>> ord('b')
98
>>> ord('c')
99
六 加密循环体 for c in s
' '.join([bin(ord(c)).replace('0b', '') for c in s])中[bin(ord(c)).replace('0b', '') for c in s] 等价于
tmp
=
[]
for
c
in
s :
tmp.append(
bin(ord(c)).replace('0b', ''))
七. Python chr() 函数
chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
返回值是当前整数对应的 ASCII 字符。
例如
>>>print chr(0x30), chr(0x31), chr(0x61) # 十六进制
0 1 a
>>> print chr(48), chr(49), chr(97) # 十进制
0 1 a
八. Python split() 函数
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
split() 方法语法:
str.split(str="", num=string.count(str)).
实例:
#实例1:
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( ); # 以空格为分隔符,包含 \n
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
# 分割结果为:
#['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
#['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
#实例2
txt = "Google#Runoob#Taobao#Facebook"
# 第二个参数为 1,返回两个参数列表
x = txt.split("#", 1)
print x
# 分割结果为:
#['Google', 'Runoob#Taobao#Facebook']
九. Python int() 函数
int() 函数用于将一个字符串或数字转换为整型。
以下是 int() 方法的语法:
int(x, base=10)
实例:
>>>int() # 不传入参数时,得到结果0
0
>>> int(3)
3
>>> int(3.6)
3
>>> int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>> int('0xa',16)
10
>>> int('10',8)
8
十. 解密循环体解析
bin_str = ''.join([chr(i) for i in [int(b, 2) for b in s.split(' ')]])
等价于:
bin_tmp = []
str_tmp = []
for b in s.split(' '):
bin_tmp.append(int(b, 2))
for i in bin_tmp:
str_tmp.append(chr(i))
bin_str = ''.join(str_tmp)
十一. 执行效果