<div dir="ltr">Wait a second, this is how I understood it but what Nick said made me think otherwise...<div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jan 12, 2014 at 6:22 PM, Steven D'Aprano <span dir="ltr"><<a href="mailto:steve@pearwood.info" target="_blank">steve@pearwood.info</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Sun, Jan 12, 2014 at 12:52:18PM +0100, Juraj Sukop wrote:<br>
> On Sun, Jan 12, 2014 at 2:35 AM, Steven D'Aprano <<a href="mailto:steve@pearwood.info">steve@pearwood.info</a>>wrote:<br>><br>
> Just to check I understood what you are saying. Instead of writing:<br>
><br>
>     content = b'\n'.join([<br>
>         b'header',<br>
>         b'part 2 %.3f' % number,<br>
>         binary_image_data,<br>
>         utf16_string.encode('utf-16be'),<br>
>         b'trailer'])<br>
<br>
</div>Which doesn't work, since bytes don't support %f in Python 3.<br></blockquote><div><br></div><div>I know and this was an example of the ideal (for me, anyway) way of formatting bytes.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><span style="color:rgb(34,34,34)">First, "utf16_string" confuses me. What is it? If it is a Unicode</span><br></div>
string, i.e.:<br></blockquote><div><br></div><div>It is a Unicode string which happens to contain code points outside U+00FF (as with the TTF example above), so that it triggers the (at least) 2-bytes memory representation in CPython 3.3+. I agree, I chose the variable name poorly, my bad.</div>
<div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
    content = '\n'.join([<br>
        'header',<br>
        'part 2 %.3f' % number,<br>
        binary_image_data.decode('latin-1'),<br>
</div>        utf16_string,  # Misleading name, actually Unicode string<br>
        'trailer'])<br></blockquote><div><br></div><div>Which, because of that horribly-named-variable, prevents the use of simple memcpy and makes the image data occupy way more memory than as when it was in simple bytes.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Both examples assume that you intend to do further processing of content<br>
before sending it, and will encode just before sending:<br></blockquote><div><br></div><div>Not really, I was interested to compare it to bytes formatting, hence it included the "encode()" as well.</div></div></div>
</div>