#!/usr/bin/env python # # Generate an asciidoc table of the six-bit encoding used in AIVDM packets. # # This file is Copyright (c) 2010 by the GPSD project # BSD terms apply: see the file COPYING in the distribution root for details. # # This code runs compatibly under Python 2 and 3.x for x >= 2. # Preserve this property! from __future__ import absolute_import, print_function, division sixbits = ( "000000", "000001", "000010", "000011", "000100", "000101", "000110", "000111", "001000", "001001", "001010", "001011", "001100", "001101", "001110", "001111", "010000", "010001", "010010", "010011", "010100", "010101", "010110", "010111", "011000", "011001", "011010", "011011", "011100", "011101", "011110", "011111", "100000", "100001", "100010", "100011", "100100", "100101", "100110", "100111", "101000", "101001", "101010", "101011", "101100", "101101", "101110", "101111", "110000", "110001", "110010", "110011", "110100", "110101", "110110", "110111", "111000", "111001", "111010", "111011", "111100", "111101", "111110", "111111", ) def asciiarmor(): print("`--------`-------`---------`-------") print(" Char ASCII Decimal Bits") for ch in list(range(ord('0'), ord('W')+1)) + list(range(ord('`'), ord('w')+1)): n = ch - 48 if n >= 40: n -= 8 print('"%s" %3d %3d %s' % (chr(ch), ch, n, sixbits[n])) print("---------------------------------------") if __name__ == "__main__": asciiarmor()