Request Help With Byte/String Problem

Grant Edwards grant.b.edwards at gmail.com
Fri Dec 2 10:11:18 EST 2016


On 2016-12-02, Wildman via Python-list <python-list at python.org> wrote:
> On Wed, 30 Nov 2016 14:39:02 +0200, Anssi Saari wrote:
>
>> There'll be a couple more issues with the printing but they should be
>> easy enough.
>
> I finally figured it out, I think.  I'm not sure if my changes are
> what you had in mind but it is working.  Below is the updated code.
> Thank you for not giving me the answer.  I was a good learning
> experience for me and that was my purpose in the first place.
>
> def format_ip(addr):
>     return str(int(addr[0])) + '.' + \ # replace ord() with int()
>            str(int(addr[1])) + '.' + \
>            str(int(addr[2])) + '.' + \
>            str(int(addr[3]))

This is a little more "pythonic":

    def format_ip(addr):
        return '.'.join(str(int(a) for a in addr))

I don't know what the "addr" array contains, but if addr is a byte
string, then the "int()" call is not needed, in Pythong 3, a byte is
already an integer:

    def format_ip(a):
       return '.'.join(str(b) for b in a)

addr = b'\x12\x34\x56\x78'

print(format_ip(addr))

If <addr> is an array of strings containing base-10 representations of
integers, then the str() call isn't needed either:

def format_ip(a):
    return '.'.join(s for s in a)

addr = ['12','34','56','78']

print(format_ip(addr))

-- 
Grant Edwards               grant.b.edwards        Yow! TAILFINS!! ... click
                                  at               ...
                              gmail.com            



More information about the Python-list mailing list