已知某數(shù)據(jù)加密方法如下:將字符的內(nèi)碼以字節(jié)為單位進行加密。將每個字節(jié)的后5位轉(zhuǎn)換為十進制數(shù),后面加上“,”和該字節(jié)的前3個二進制位轉(zhuǎn)換為十進制數(shù),形成該字節(jié)的加密形式。例如輸入十六進制內(nèi)碼為“B5 D8”,則輸出結(jié)果為21,5,24,6,計算過程如表所示。
內(nèi)碼(十六進制) |
B5 |
D8 |
二進制 |
10110101 |
11011000 |
后5位十進制 |
21 |
24 |
前3位十進制 |
5 |
6 |
加密結(jié)果 |
21,5,24,6 |
按照上述規(guī)則,小陳設(shè)計了一個Python的解密程序如下所示。請回答下列問題:
(1)若加密結(jié)果為“3,6,5,6”,則原來十六進制的內(nèi)碼為
C3C5
C3C5
。
(2)在程序劃線處填入合適的代碼。
def dtoh(x):
s1=“0123456789ABCDEF“
st=““
while x>0:
st=s1[x%16]+st
①______
return st
a=[0]
*50
k=0
p=0
jm=““
s=input(“請輸入密文:“)
for i in range(len(s)):
ch=s[i]
if“0“<=ch<=“9“:
②______
else:
if k%2==1:
a[k]=p
*32+a[k-1]
else:
③______
k+=1
p=0
a[k]=p
*32+a[k-1]
for j in range(1,k+1,2):
④______
print(jm)
程序劃線①對應填入的代碼為
x=x//16或x//=16
x=x//16或x//=16
;
程序劃線②對應填入的代碼為
p=p*10+int(ch)
p=p*10+int(ch)
;
程序劃線③對應填入的代碼為
a[k]=p
a[k]=p
。