New submission from Alex Mohr <alexjm...@gmail.com>:

Instead they should request and take into consideration the buffer object's 
data format.  For example, surely we don't want to treat floating point binary 
representations as string characters:

>>> from array import array
>>> a = array('f', [1.2, 2.3, 3.4])
>>> int(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 
b'\x9a\x99\x99?33\x13@\x9a\x99Y@'

It's even a little dangerous, since you can get "lucky" with certain binary 
representations:

>>> a = array('I', [875770417, 875770420])
>>> int(a)
12344234

----------
components: Interpreter Core
messages: 376317
nosy: amohr
priority: normal
severity: normal
status: open
title: Builtins like int() and float() should not blindly treat buffer protocol 
bytes as string characters.
type: behavior

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue41707>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to