Hi,
The function below works, but it's such a kludge! Is there a way to make this
more elegant?
As said in the docstring, I want to round up a given integer to the nearest
multiple of 8. I was thinking
of something like math.ceil.
def _getPadding(charlen):
""" Helper function to replace null bytes ('\x00') at the end of
string values. Rounds up <charlen> to the nearest multiple of 8.
Every string value is 8 bytes or a multiple thereof. For example, a
5-character string needs a padding of 3 spaces to prevent the
null bytes
>>> dict([(charlen, _getPadding(charlen)) for charlen in range(1, 40, 7)])
{1: 8, 36: 40, 8: 8, 15: 16, 22: 24, 29: 32}
>>> s = "I love Python"
>>> s.ljust(_getPadding(len(s)))
'I love Python '
"""
i = 0
while True:
i += 1
if (i * 8) > charlen:
return (i * 8) % charlen + charlen if charlen > 1 else 8
if __name__ == "__main__":
import doctest
doctest.testmod()
Thanks!
Regards,
Albert-Jan
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
All right, but apart from the sanitation, the medicine, education, wine, public
order, irrigation, roads, a
fresh water system, and public health, what have the Romans ever done for us?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor