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 ..."

 

 

转载于:https://www.cnblogs.com/Kaysin/archive/2013/04/18/3029729.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值