Help needed with translating perl to python

Duncan Booth duncan.booth at invalid.invalid
Thu Jun 28 10:31:04 CEST 2007

attn.steven.kuo at wrote:

> Let me add that instead of an an-close-as-possible translation
> from the  original Perl code, one can rewrite this as:
>>>> def bcdlen(length):
> ...     strlen = "%04s" % length
> ...     return chr(int(strlen[2:4], 16)) + chr(int(strlen[0:2], 16))
> which is more "Pythonic" to me.

Throwing an exception for values of length less than 100 doesn't seem 
terribly good. Did you mean "%04d"?

Personally I think I'd split the number up before round-tripping through 
the string. Maybe:

def bcdbyte(b):
    return chr(int(str(b), 16))

def bcdlen(length):
    return bcdbyte(length%100) + bcdbyte(length//100)

More information about the Python-list mailing list