In html programming, colors can be represented by a 6-digit hexadecimal number: FFFFFF represents white whereas 000000 represents black. In hex, these can be represented in a friendlier fashion, ranging from 00 to FF. This means one byte can carry binary values from 0000 0000 to 1111 1111. Each hex digit represents four binary digits therefore, hex is a language to write binary in an abbreviated form.įour binary digits (also called nibbles) make up half a byte. Hex is used in mathematics and information technologies as a more friendly way to represent binary numbers. The letters are used because of the need to represent the values 10, 11, 12, 13, 14 and 15 each in one single symbol. These are the 10 decimal digits (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) and the first six letters of the English alphabet (A, B, C, D, E, F). As a base-16 numeral system, it uses 16 symbols. In fact, you could accept desired format as a parameter (instead of your sep).The hexadecimal system (shortly hex), uses the number 16 as its base (radix). While you could handle that with naming/documentation, you can change your algorithm to convert MACs from several formats to CISCO one - simply remove separators from strings (multiple str.replace-s will do) and then slice the result as you wish. You assume some format of input data, while it's not spelled-out explicitly.
PYTHON CONVERT MAC ADDRESS TO HEX MAC
#print final MAC address is just a visual garbage - next line is self-descriptive enough. #Coverts MAC Addresses into cisco format should be a docstring instead. Separator instead of sep may help a little bit to someone who only sees function's signature (as in many IDEs). mac_to_cisco_format is long, mac_to_cisco may be alright. If someone had successfully guessed that mac_conv converts MAC address, they'd still have to guess the format.
PYTHON CONVERT MAC ADDRESS TO HEX FOR MAC
There may be other formats for MAC addresses. If you wanted to do something else with MAC in that format (like printing it as a part of some string), what would you do? Naming You print the result instead of return-ing it. If this was going into a product, I would probably add some error handling too, to allow for input that isn't a mac address - too short, too long, wrong separators, alternate groupings (a cisco-formatted address is still a valid mac address, but this function won't handle it.)Ĭode seems fine - it works and is easy to comprehend. If I was writing this, however, I would probably do it in just a couple of lines, as you know exactly how the input and output strings are going to be formatted: def mac_conv(mac, sep='-'): You can actually eliminate that usage of the variable all together: #join groups into a single MAC I would also avoid reusing variables, especially if its a function argument ( mac). #Open file with MAC addresses and convert them Return '.'.join(''.join(group) for group in groups)įirst of all, you should be using return rather than print to get a value out of a function, otherwise you'll have problems when you try to expand the program. This can result in: def mac_conv(mac, sep='-'): Other than the above function, you don't need to use f.readlines() you can just use f. I'd then join the last three lines into one.Īs return and '.'.join are easy to understand in a single one-liner. Perform a list comprehension to join the sliced segments together.Slice segments into a three item list.To do this I would base my algorithm around the use of a list comprehension. The only thing I'd change is to reduce the amount of lines.