Python HDB3 AMI 编码与解码
1 # -*- coding: cp936 -*- 2 pre_n = '010010000100001100000000000000000000000001010001001001001010000101' 3 print '编码过程……………………' 4 length = len(pre_n) 5 pre_list = list(pre_n) 6 for ch in range (0,length): 7 pre_list[ch] = int (pre_list[ch]) 8 store_list = pre_list 9 print pre_list 10 ich = -1 ; 11 for ch in range (0,length): 12 if pre_list[ch] == 1 : 13 ich = ich * (-1) 14 pre_list[ch] = pre_list[ch]*ich; 15 print pre_list 16 pre_flag_num = 0; 17 flag_zero = 0; 18 for ch in range (0,length): 19 if pre_list[ch] <> 0 : 20 flag_num = pre_list[ch]; 21 flag_zero = 0; 22 else: 23 flag_zero += 1; 24 if flag_zero == 4 : 25 if flag_num == pre_flag_num : 26 pre_list[ch-3] = flag_num * -1; 27 pre_list[ch] = flag_num * -1; 28 pre_flag_num = flag_num * -1; 29 for ch_temp in range(ch+1,length): 30 pre_list[ch_temp] = pre_list[ch_temp] * -1 31 else: 32 pre_list[ch] = flag_num ; 33 pre_flag_num = pre_list[ch]; 34 flag_zero = 0; 35 print pre_list,'\n 解码过程………………' 36 flag_zero = 0; 37 for ch in range (0,length): 38 if flag_zero == 2 : 39 if flag_num == pre_list[ch]: 40 flag_zero = 0 41 for ch_temp in range(ch-3, ch+1): 42 pre_list[ch_temp] = 0; 43 if flag_zero == 3 : 44 if pre_list[ch] <> 0 : 45 flag_zero = 0; 46 for ch_temp in range(ch-3, ch+1): 47 pre_list[ch_temp] = 0; 48 if pre_list[ch] <> 0 : 49 flag_num = pre_list[ch] 50 flag_zero = 0; 51 else: 52 flag_zero += 1; 53 pre_list[ch] = abs(pre_list[ch]) 54 print pre_list 55 if pre_list is store_list: 56 print "Successed ..."