Hi Nils,

yes, that's exactly the same problem! Thank you for reminding me. I've
totally forgotten how the "correct" encoding was called.

Best regards,
Simon

On 2020-01-22, Nils Bruin <nbr...@sfu.ca> wrote:
> On Wednesday, January 22, 2020 at 1:35:16 PM UTC-8, Simon King wrote:
>>
>> Here is an example: 
>> Unpickling the data initially results in a string, s: 
>>   sage: s = '\x80\x1f' 
>> I want it to be interpreted as the following bytes, b: 
>>   sage: b = b'\x80\x1f' 
>>
>> How can I efficiently transform s into b? The following works, but I 
>>
>
> This is exactly what we encountered on #28444, where we found that "latin1" 
> decoding has a left-inverse (if decoding acts on the left) of "latin1" 
> encoding. It looks like the encoding Py3 used for your py2-string was 
> "latin1" (that's what we decided was the smart thing to do most of the time 
> for possibly binary data), so
>
> s.encode(encoding="latin1")
>
> should do the trick. That should be pretty efficient.
>
>  
>
>> doubt that it is very efficient: 
>>   sage: import struct 
>>   sage: struct.pack('{}B'.format(len(s)),*(ord(_) for _ in s)) == b 
>>   True 
>>
>> Note that sage.cpython.string.str_to_bytes does't do what I need: 
>>   sage: sage.cpython.string.str_to_bytes(s) 
>>   b'\xc2\x80\x1f' 
>>
>> Best regards, 
>> Simon 
>>
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/r0ak7q%243884%241%40ciao.gmane.io.

Reply via email to