Jeffrey Kintscher <[email protected]> added the comment:
>>> b'\407'
b'\x07'
>>> ord(b'\407')
7
This is the object structure passed to builtin_ord():
(lldb) p *((PyBytesObject *)(c))
(PyBytesObject) $19 = {
ob_base = {
ob_base = {
ob_refcnt = 4
ob_type = 0x00000001003cb0b0
}
ob_size = 1
}
ob_shash = 8685212186264880044
ob_sval = {
[0] = '\a'
}
}
If two bytes were stored (0x107), I would expect ob_sval[0] to be 7 ('\a') and
ob_sval[1] to be 1 on a little endian system, but ob_sval[1] is 0:
(lldb) p (long)(unsigned char) (((PyBytesObject *)(c))->ob_sval[0])
(long) $23 = 7
(lldb) p (long)(unsigned char) (((PyBytesObject *)(c))->ob_sval[1])
(long) $24 = 0
This means the truncation to a single byte is happening when the byte string
object is created.
----------
nosy: +Jeffrey.Kintscher
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue37367>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com