[Python] Numero to byte

lordkrandel lordkrandel a gmail.com
Mer 12 Gen 2011 11:09:21 CET


# Bugfix, non ritornava per quelli sopra i 1024 PiB

def f(
    bytes,
    factor=1024,
    labels=['', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi'],
    precision=4 ):
    for x,y in map(
        lambda x: (             factor**(x[0]+1),
            ('%.' + str(precision) + 'lf %sB') % (bytes / factor**x[0], x[1])
        ),
        enumerate(labels)
    ):
        if (bytes < x):
            return y
    # è un po' bruttino
    return ('%.' + str(precision) + 'lf %sB') % (bytes / factor**len(labels), labels[-1])


# Test
for x in range(16):
    y = 512.12*(10**x)
    print f(y)

-- 
Wyrmskull


Maggiori informazioni sulla lista Python