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)).
- str -- 分隔符,默認爲所有的空字符,包括空格、換行(\n)、製表符(\t)等。
- num -- 分割次數。默認爲 -1, 即分隔所有。
- 返回分割後的字符串列表
實例:
#實例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)
- x -- 字符串或數字。
- base -- 進制數,默認十進制。
- 返回整數型數據
實例:
>>>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)
十一. 執行效果