pythonic malloc

Brad Hards bhards at bigpond.net.au
Mon Jul 21 12:32:08 CEST 2003


Karl Scalet wrote:

> kjockey schrieb:
>> I have some simple UDP code that does:
>>
s.sendto("\xf0\x00\x02\x00rachel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",addr)
>> 
>> This is OK, except that I'd like to change the text in the middle
>> ("rachel", which is the hostname FWIW), and the NUL padding needs to go
>> out to make the length 25 bytes (so the padding depends on the length of
>> the name).
>> 
>> So I could do something like:
>> retpacket = "\xf0\x00\x02\x00"+socket.gethostname()
>> while len(retpacket) < 26:
> 
> shouldn't that be 25?
Yes.

>>      retpacket += "\x00"
>> s.sendto(retpacket, addr)
>> 
>> But that feels "wrong". And Python in a Nutshell says its a bad idea  -
>> "anti-idiom".
>> 
>> Can anyone show me the true path?
> 
> No idea, if it's the true path:
> 
> hn = socket.gethostname()
> retpacket = '\xf0\x00\x02\x00%s%s' % (hn, (25-4-len(hn))*chr(0))
> s.sendto(retpacket, addr)
Probably better for efficiency, but not much for readability....

Anyone else?




More information about the Python-list mailing list