|
| 1 | +#--------------------------- |
| 2 | +# Based on this system: |
| 3 | +# http://gurno.com/adam/mne/ |
| 4 | +#--------------------------- |
| 5 | +class Mne: |
| 6 | + def num_to_mne(num): |
| 7 | + dataa= [ |
| 8 | + "zip", "ace", "act", "add", "age", |
| 9 | + "aim", "air", "and", "ant", "ape", |
| 10 | + "arm", "art", "ash", "ask", "bad", |
| 11 | + "bag", "ban", "bar", "bat", "bay", |
| 12 | + "bed", "bet", "bid", "big", "bin", |
| 13 | + "bit", "bog", "boo", "box", "bud", |
| 14 | + "bug", "bun", "bus", "cab", "can", |
| 15 | + "cap", "car", "cat", "cop", "cot", |
| 16 | + "cow", "cry", "cub", "cup", "cut", |
| 17 | + "day", "den", "did", "die", "dig", |
| 18 | + "dim", "dip", "dog", "dry", "dub", |
| 19 | + "dud", "dug", "ear", "eat", "eel", |
| 20 | + "egg", "elf", "elk", "elm", "end", |
| 21 | + "fan", "far", "fat", "fed", "few", |
| 22 | + "fib", "fig", "fin", "fit", "fix", |
| 23 | + "fly", "fog", "foo", "fox", "fry", |
| 24 | + "fun", "gab", "gag", "gap", "gas", |
| 25 | + "gel", "gem", "get", "gin", "got", |
| 26 | + "gum", "gut", "had", "has", "hat", |
| 27 | + "hen", "hex", "hid", "hip", "hit", |
| 28 | + "hog", "hop", "hot", "how", "hub", |
| 29 | + "hug", "hum", "hut", "ice", "ill", |
| 30 | + "imp", "ink", "irk", "jab", "jam", |
| 31 | + "jar", "jaw", "jet", "jig", "job", |
| 32 | + "jog", "jot", "joy", "key", "kid", |
| 33 | + "kin", "kit", "lab", "lag", "lap", |
| 34 | + "law", "lax", "lay", "leg", "let", |
| 35 | + "lid", "lip", "lit", "lot", "low", |
| 36 | + "mad", "map", "mat", "men", "met", |
| 37 | + "mix", "mob", "moo", "mop", "mud", |
| 38 | + "mug", "nab", "nag", "nap", "net", |
| 39 | + "new", "nil", "nip", "nod", "nor", |
| 40 | + "now", "nut", "oak", "oat", "odd", |
| 41 | + "off", "old", "orb", "out", "owl", |
| 42 | + "own", "pad", "pal", "pan", "pay", |
| 43 | + "pen", "pet", "pie", "pig", "pin", |
| 44 | + "pit", "ply", "pod", "pop", "pot", |
| 45 | + "pox", "pry", "pun", "pup", "put", |
| 46 | + "rag", "ran", "rat", "raw", "red", |
| 47 | + "rid", "rig", "rip", "rot", "row", |
| 48 | + "rub", "rug", "run", "rut", "rye", |
| 49 | + "sad", "sag", "sap", "sat", "saw", |
| 50 | + "say", "set", "shy", "sip", "sit", |
| 51 | + "ski", "sky", "sly", "sob", "soy", |
| 52 | + "spa", "spy", "tab", "tag", "tan", |
| 53 | + "tap", "tar", "tax", "the", "tie", |
| 54 | + "tin", "tip", "top", "toy", "try", |
| 55 | + "tub", "tug", "use", "van", "vat", |
| 56 | + "vex", "vow", "wag", "war", "was", |
| 57 | + "wax", "web", "wet", "who", "wig", |
| 58 | + "win", "wit", "yes", "yet", "zoo", |
| 59 | + "all"] |
| 60 | + #----------------------------------- |
| 61 | + #store 256 decoded elements in stack |
| 62 | + #----------------------------------- |
| 63 | + stack=[] |
| 64 | + #print("NUM=",num) |
| 65 | + q=num |
| 66 | + if q < 256 : |
| 67 | + q,r = divmod(num,256) |
| 68 | + stack.append(r) |
| 69 | + #print(q,r) |
| 70 | + else: |
| 71 | + while q > 255 : |
| 72 | + q,r = divmod(q,256) |
| 73 | + stack.append(r) |
| 74 | + #print(q,r) |
| 75 | + #q,r = divmod(q,256) |
| 76 | + stack.append(q) |
| 77 | + #print(q,r) |
| 78 | + #else: |
| 79 | + #print(len(stack)) |
| 80 | + #---------------------- |
| 81 | + #Finally code the stack |
| 82 | + #---------------------- |
| 83 | + rstring="" |
| 84 | + first=True |
| 85 | + for element in reversed(stack): |
| 86 | + if first: |
| 87 | + first=False |
| 88 | + else: |
| 89 | + rstring=rstring + '-' |
| 90 | + rstring=rstring+dataa[element] |
| 91 | + #print ("R:",stack) |
| 92 | + |
| 93 | + return rstring |
| 94 | + |
| 95 | + def mne_to_num(mme): |
| 96 | + datad= { |
| 97 | + "zip" : "000", "ace" : "001", "act" : "002", "add" : "003", "age" : "004", |
| 98 | + "aim" : "005", "air" : "006", "and" : "007", "ant" : "008", "ape" : "009", |
| 99 | + "arm" : "010", "art" : "011", "ash" : "012", "ask" : "013", "bad" : "014", |
| 100 | + "bag" : "015", "ban" : "016", "bar" : "017", "bat" : "018", "bay" : "019", |
| 101 | + "bed" : "020", "bet" : "021", "bid" : "022", "big" : "023", "bin" : "024", |
| 102 | + "bit" : "025", "bog" : "026", "boo" : "027", "box" : "028", "bud" : "029", |
| 103 | + "bug" : "030", "bun" : "031", "bus" : "032", "cab" : "033", "can" : "034", |
| 104 | + "cap" : "035", "car" : "036", "cat" : "037", "cop" : "038", "cot" : "039", |
| 105 | + "cow" : "040", "cry" : "041", "cub" : "042", "cup" : "043", "cut" : "044", |
| 106 | + "day" : "045", "den" : "046", "did" : "047", "die" : "048", "dig" : "049", |
| 107 | + "dim" : "050", "dip" : "051", "dog" : "052", "dry" : "053", "dub" : "054", |
| 108 | + "dud" : "055", "dug" : "056", "ear" : "057", "eat" : "058", "eel" : "059", |
| 109 | + "egg" : "060", "elf" : "061", "elk" : "062", "elm" : "063", "end" : "064", |
| 110 | + "fan" : "065", "far" : "066", "fat" : "067", "fed" : "068", "few" : "069", |
| 111 | + "fib" : "070", "fig" : "071", "fin" : "072", "fit" : "073", "fix" : "074", |
| 112 | + "fly" : "075", "fog" : "076", "foo" : "077", "fox" : "078", "fry" : "079", |
| 113 | + "fun" : "080", "gab" : "081", "gag" : "082", "gap" : "083", "gas" : "084", |
| 114 | + "gel" : "085", "gem" : "086", "get" : "087", "gin" : "088", "got" : "089", |
| 115 | + "gum" : "090", "gut" : "091", "had" : "092", "has" : "093", "hat" : "094", |
| 116 | + "hen" : "095", "hex" : "096", "hid" : "097", "hip" : "098", "hit" : "099", |
| 117 | + "hog" : "100", "hop" : "101", "hot" : "102", "how" : "103", "hub" : "104", |
| 118 | + "hug" : "105", "hum" : "106", "hut" : "107", "ice" : "108", "ill" : "109", |
| 119 | + "imp" : "110", "ink" : "111", "irk" : "112", "jab" : "113", "jam" : "114", |
| 120 | + "jar" : "115", "jaw" : "116", "jet" : "117", "jig" : "118", "job" : "119", |
| 121 | + "jog" : "120", "jot" : "121", "joy" : "122", "key" : "123", "kid" : "124", |
| 122 | + "kin" : "125", "kit" : "126", "lab" : "127", "lag" : "128", "lap" : "129", |
| 123 | + "law" : "130", "lax" : "131", "lay" : "132", "leg" : "133", "let" : "134", |
| 124 | + "lid" : "135", "lip" : "136", "lit" : "137", "lot" : "138", "low" : "139", |
| 125 | + "mad" : "140", "map" : "141", "mat" : "142", "men" : "143", "met" : "144", |
| 126 | + "mix" : "145", "mob" : "146", "moo" : "147", "mop" : "148", "mud" : "149", |
| 127 | + "mug" : "150", "nab" : "151", "nag" : "152", "nap" : "153", "net" : "154", |
| 128 | + "new" : "155", "nil" : "156", "nip" : "157", "nod" : "158", "nor" : "159", |
| 129 | + "now" : "160", "nut" : "161", "oak" : "162", "oat" : "163", "odd" : "164", |
| 130 | + "off" : "165", "old" : "166", "orb" : "167", "out" : "168", "owl" : "169", |
| 131 | + "own" : "170", "pad" : "171", "pal" : "172", "pan" : "173", "pay" : "174", |
| 132 | + "pen" : "175", "pet" : "176", "pie" : "177", "pig" : "178", "pin" : "179", |
| 133 | + "pit" : "180", "ply" : "181", "pod" : "182", "pop" : "183", "pot" : "184", |
| 134 | + "pox" : "185", "pry" : "186", "pun" : "187", "pup" : "188", "put" : "189", |
| 135 | + "rag" : "190", "ran" : "191", "rat" : "192", "raw" : "193", "red" : "194", |
| 136 | + "rid" : "195", "rig" : "196", "rip" : "197", "rot" : "198", "row" : "199", |
| 137 | + "rub" : "200", "rug" : "201", "run" : "202", "rut" : "203", "rye" : "204", |
| 138 | + "sad" : "205", "sag" : "206", "sap" : "207", "sat" : "208", "saw" : "209", |
| 139 | + "say" : "210", "set" : "211", "shy" : "212", "sip" : "213", "sit" : "214", |
| 140 | + "ski" : "215", "sky" : "216", "sly" : "217", "sob" : "218", "soy" : "219", |
| 141 | + "spa" : "220", "spy" : "221", "tab" : "222", "tag" : "223", "tan" : "224", |
| 142 | + "tap" : "225", "tar" : "226", "tax" : "227", "the" : "228", "tie" : "229", |
| 143 | + "tin" : "230", "tip" : "231", "top" : "232", "toy" : "233", "try" : "234", |
| 144 | + "tub" : "235", "tug" : "236", "use" : "237", "van" : "238", "vat" : "239", |
| 145 | + "vex" : "240", "vow" : "241", "wag" : "242", "war" : "243", "was" : "244", |
| 146 | + "wax" : "245", "web" : "246", "wet" : "247", "who" : "248", "wig" : "249", |
| 147 | + "win" : "250", "wit" : "251", "yes" : "252", "yet" : "253", "zoo" : "254", |
| 148 | + "all" : "255" } |
| 149 | + stack=[] |
| 150 | + values=mme.split('-') |
| 151 | + #lookup numbers and put on stack |
| 152 | + for i in values: |
| 153 | + stack.append(int(datad[i])) |
| 154 | + #print("F:",stack) |
| 155 | + vsum=0 |
| 156 | + value=0 |
| 157 | + for i in range(0,len(stack)-1,1): |
| 158 | + #print ("Stack[",i,"]: ", stack[i]) |
| 159 | + #print("len(stack)-i-1: ",len(stack)-i-1) |
| 160 | + vsum=256**(len(stack)-i-1) * stack[i] + vsum |
| 161 | + #vsum=value |
| 162 | + #if stack[i]==0 : |
| 163 | + #else: |
| 164 | + # value=(256**(pwr)) * stack[i] |
| 165 | + #vsum=vsum+value |
| 166 | + #print (i,vsum) |
| 167 | + #print("Stack length=",len(stack)) |
| 168 | + vsum=vsum+stack[len(stack)-1] |
| 169 | + #print("Final VSUM: ",vsum) |
| 170 | + return(vsum) |
| 171 | + |
| 172 | + def mne_test(self): |
| 173 | + #Simple Test code for MNE: |
| 174 | + mne = Mne() |
| 175 | + testvalues=[5,255,256,257,511,512,513,65535,65536,65537,16777215,16777216,16777217] |
| 176 | + for i in testvalues: |
| 177 | + vv=self.num_to_mne(i) |
| 178 | + print("Coding: ", i, vv) |
| 179 | + print("Deconding: ",vv, mne.mne_to_num(vv)) |
| 180 | + |
| 181 | + |
0 commit comments