Author terry.reedy
Recipients arjennienhuis, benjamin.peterson, eric.smith, loewis, terry.reedy, uau, vstinner
Date 2011-03-07.19:09:19
SpamBayes Score 0.00152392
Marked as misclassified No
Message-id <1299524960.06.0.835696054881.issue3982@psf.upfronthosting.co.za>
In-reply-to
Content
You are right, I misinterpreted the meaning of 's' without a count (and opened #11436 to clarify). However, for the fairly common case where a variable-length binary block is preceded by a 4 byte *binary* count, one can do something which is not too bad:

>>> block = b'lsfjdlksaj'
>>> n=len(block)
>>> struct.pack('I%ds'%n, n, block)
b'\n\x00\x00\x00lsfjdlksaj'

If leading blanks are acceptable for your example with count as ascii hex digits, one can do something that I admit is worse:

>>> struct.pack('10s%ds2s'%n, ('%8x\r\n'%n).encode(), block, b'\r\n')
b'       a\r\nlsfjdlksaj\r\n'

Of course, for either of these in isolation, I would probably only use .pack for the binary conversion and otherwise use '+' or b''.join(...).
History
Date User Action Args
2011-03-07 19:09:20terry.reedysetrecipients: + terry.reedy, loewis, vstinner, eric.smith, benjamin.peterson, arjennienhuis, uau
2011-03-07 19:09:20terry.reedysetmessageid: <1299524960.06.0.835696054881.issue3982@psf.upfronthosting.co.za>
2011-03-07 19:09:19terry.reedylinkissue3982 messages
2011-03-07 19:09:19terry.reedycreate