📄 run_length.py
字号:
#!/usr/bin/env python## Copyright 2007 Free Software Foundation, Inc.# # This file is part of GNU Radio# # GNU Radio is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 3, or (at your option)# any later version.# # GNU Radio is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.# # You should have received a copy of the GNU General Public License# along with GNU Radio; see the file COPYING. If not, write to# the Free Software Foundation, Inc., 51 Franklin Street,# Boston, MA 02110-1301, USA.# from optparse import OptionParserimport sysdef main(): parser = OptionParser() parser.add_option("-f", "--file", default=None, help="Choose file to read data from.") (options, args) = parser.parse_args() if options.file == None: print "Must specify file to read from using '-f'." sys.exit(1) print "Using", options.file, "for data." f = open(options.file, 'r') runs = [] count = 0 current = 0 bytes = 0 bits = 0 for ch in f.read(): x = ord(ch) bytes = bytes + 1 for i in range(7,-1,-1): bits = bits + 1 t = (x >> i) & 0x1 if t == current: count = count + 1 else: if count > 0: if len(runs) < count: for j in range(count - len(runs)): runs.append(0); runs[count-1] = runs[count-1] + 1 current = 1-current; count = 1 # Deal with last run at EOF if len(runs) < count and count > 0: for j in range(count - len(runs)): runs.append(0); runs[count-1] = runs[count-1] + 1 chk = 0 print "Bytes read: ", bytes print "Bits read: ", bits print for i in range(len(runs)): chk = chk + runs[i]*(i+1) print "Runs of length", i+1, ":", runs[i] print print "Sum of runs:", chk, "bits" print print "Maximum run length is", len(runs), "bits"if __name__ == "__main__": main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -