Exemplo n.º 1
0
def oct_to_hex(octnum):
    """Convert octal to hexadecimal.
    Uses binary conversion as an intermediate step.
    Instructions used for algorithm from:
    wikipedia.org/wiki/Octal#Octal_to_hexadecimal_conversion
    """
    hexnum, binary = '', ''
    digits = unicode(octnum)
    for digit in digits:
        # Convert decimal to binary, pad where appropriate.
        if digit == '0':
            binnum = '000'
        elif digit == '1':
            binnum = '001'
        else:
            binnum = dec_to_bin(int(digit))
        binnum = binnum.zfill(2)
        binary += binnum
    # Group remainder by 4 digits
    bin_groups = make_groups(binary, 4)
    if DEBUG:
        print_vars([['bin group x 4', bin_groups],
                    ['oct => hex (bin)', binary]])
    for group in bin_groups:
        # Add num, shave off individual 0x part from individual conversion.
        hexnum += unicode(bin_to_hex(group))[2:]
    return '0x{}'.format(hexnum)
Exemplo n.º 2
0
def oct_to_hex(octnum):
    """Convert octal to hexadecimal.
    Uses binary conversion as an intermediate step.
    Instructions used for algorithm from:
    wikipedia.org/wiki/Octal#Octal_to_hexadecimal_conversion
    """
    hexnum, binary = '', ''
    digits = unicode(octnum)
    for digit in digits:
        # Convert decimal to binary, pad where appropriate.
        if digit == '0':
            binnum = '000'
        elif digit == '1':
            binnum = '001'
        else:
            binnum = dec_to_bin(int(digit))
        binnum = binnum.zfill(2)
        binary += binnum
    # Group remainder by 4 digits
    bin_groups = make_groups(binary, 4)
    if DEBUG:
        print_vars(
            [['bin group x 4', bin_groups], ['oct => hex (bin)', binary]])
    for group in bin_groups:
        # Add num, shave off individual 0x part from individual conversion.
        hexnum += unicode(bin_to_hex(group))[2:]
    return '0x{}'.format(hexnum)
Exemplo n.º 3
0
def dec_to_bin(num):
    """Convert integer to binary. Only handles positive integers."""
    if num == 0:
        return '0'
    bits = divide_by(abs(num), 2)
    for k, bit in enumerate(bits):
        # Pad digits if necessary
        bits[k] = bit.zfill(1)
    res = ''.join(bits)
    if DEBUG:
        print_vars([['dec', num], ['dec => bin', res]], convert=True)
    return res
Exemplo n.º 4
0
def dec_to_bin(num):
    """Convert integer to binary. Only handles positive integers."""
    if num == 0:
        return '0'
    bits = divide_by(abs(num), 2)
    for k, bit in enumerate(bits):
        # Pad digits if necessary
        bits[k] = bit.zfill(1)
    res = ''.join(bits)
    if DEBUG:
        print_vars([['dec', num], ['dec => bin', res]], convert=True)
    return res
Exemplo n.º 5
0
def oct_to_bin(num):
    """Convert octal to binary
    instructions used for algorithm from:
    wikipedia.org/wiki/Octal#Octal_to_binary_conversion
    """
    binary = ''
    digits = unicode(num)
    for digit in digits:
        print_vars(['octal digit', digit])
        binary += dec_to_bin(int(digit)).zfill(3)
    if DEBUG:
        print_vars(['octal to binary', binary])
    return binary
Exemplo n.º 6
0
def oct_to_bin(num):
    """Convert octal to binary
    instructions used for algorithm from:
    wikipedia.org/wiki/Octal#Octal_to_binary_conversion
    """
    binary = ''
    digits = unicode(num)
    for digit in digits:
        print_vars(['octal digit', digit])
        binary += dec_to_bin(int(digit)).zfill(3)
    if DEBUG:
        print_vars(['octal to binary', binary])
    return binary
Exemplo n.º 7
0
def hex_to_oct(hexnum):
    """Convert hexadecimal to octal"""
    hexnum = unicode(hexnum)
    if hexnum.startswith('0x'):
        hexnum = hexnum[2:]
    octal = ''
    binary = '0' + hex_to_bin(hexnum)
    groups = make_groups(binary, 3)
    if DEBUG:
        print_vars(['Hex to octal', binary])
        print_vars(['Hex to octal (binary groups)', groups])
    for group in groups:
        octal += unicode(bin_to_oct(group))
    return int(octal)
Exemplo n.º 8
0
def hex_to_oct(hexnum):
    """Convert hexadecimal to octal"""
    hexnum = unicode(hexnum)
    if hexnum.startswith('0x'):
        hexnum = hexnum[2:]
    octal = ''
    binary = '0' + hex_to_bin(hexnum)
    groups = make_groups(binary, 3)
    if DEBUG:
        print_vars(['Hex to octal', binary])
        print_vars(['Hex to octal (binary groups)', groups])
    for group in groups:
        octal += unicode(bin_to_oct(group))
    return int(octal)
Exemplo n.º 9
0
def make_groups(string, count):
    """Make a set of groups with a string.

    e.g. >>> make_groups('ABCDEFGH', 2) = [['AB', 'CD', 'EF', 'GH']]
    Raises ValueError if modulus operation results in uneven group distribution.
    """
    groups = []
    if count == 0:
        return [string]
    if len(string) % count != 0:
        raise ValueError(
            'Modulus `{}` on string `{}` of length `{}` is not uniform.'.format(
                count, string, len(string)))
    else:
        for k in range(0, len(string), count):
            groups.append(string[k: k + count])
    if DEBUG:
        print_vars(['called via `make_groups`', groups])
    return groups
Exemplo n.º 10
0
def make_groups(string, count):
    """Make a set of groups with a string.

    e.g. >>> make_groups('ABCDEFGH', 2) = [['AB', 'CD', 'EF', 'GH']]
    Raises ValueError if modulus operation results in uneven group distribution.
    """
    groups = []
    if count == 0:
        return [string]
    if len(string) % count != 0:
        raise ValueError(
            'Modulus `{}` on string `{}` of length `{}` is not uniform.'.
            format(count, string, len(string)))
    else:
        for k in range(0, len(string), count):
            groups.append(string[k:k + count])
    if DEBUG:
        print_vars(['called via `make_groups`', groups])
    return groups
Exemplo n.º 11
0
def hex_to_bin(hexnum):
    """Convert hexadecimal to binary"""
    binary = dec_to_bin(hex_to_dec(hexnum))
    if DEBUG:
        print_vars(['Hex to bin', binary])
    return binary
Exemplo n.º 12
0
def hex_to_bin(hexnum):
    """Convert hexadecimal to binary"""
    binary = dec_to_bin(hex_to_dec(hexnum))
    if DEBUG:
        print_vars(['Hex to bin', binary])
    return binary