Найти - Пользователи
Полная версия: Бинарную строку в список интов
Начало » Python для новичков » Бинарную строку в список интов
1 2 3 4
py.user.next
odnochlen
Ну это, извини меня, быдлокод нижайшего пошиба.
Варианты с unpack и array самые цивильные
там нигде не сказано, что это набор интов
Андрей Светлов

Array: The actual representation of values is determined by the machine architecture (strictly speaking, by the C implementation).

odnochlen
Андрей Светлов, то есть для (де)сериализации array не предназначен в принципе?

py.user.next
там нигде не сказано, что это набор интов
Можно предположить, что это так. А вообще да, нужно описание формата.
Андрей Светлов

Данные не должны пересекать пределы машины. Ну или кластера (обычно он архитектурно однородный).

odnochlen
Вообще, по моему мнению, от авторов array не отпало бы, если бы они добавили в конструктор или fromstring возможность указать порядок байтов. Или хотя бы возможность самому узнать порядок байтов в реализации array, чтобы, если нужно, сделать byteswap.
Андрей Светлов

http://bugs.python.org/issue210829

odnochlen
Сразу отвечу на вопрос, почему бы это не сделать с помощью struct: скорость может отличаться на порядок и больше.
odnochlen
Андрей Светлов
http://bugs.python.org/issue210829
s = '\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00'
arr = array('L',s)
if sys.byteorder!='little': # порядок байтов не совпадает с порядком в массиве
    arr.byteswap()
print arr
Но модификатор для порядка байтов как в struct мне понравился бы больше.
Андрей Светлов

Сделайте патч, кто мешает?

odnochlen
Андрей Светлов
Сделайте патч, кто мешает?
Наф надо. Вы, когда вам что-то не нравится, например, в отечественном авто, делаете патч и отправляеет производителю, который на него болт кладет?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB