Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 23, 2012 09:03:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Бинарную строку в список интов

odnochlen
Ну это, извини меня, быдлокод нижайшего пошиба.
Варианты с unpack и array самые цивильные
там нигде не сказано, что это набор интов



Офлайн

#2 Авг. 23, 2012 10:41:06

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Бинарную строку в список интов

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



Офлайн

#3 Авг. 23, 2012 16:42:40

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Бинарную строку в список интов

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

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

Отредактировано odnochlen (Авг. 23, 2012 16:44:05)

Офлайн

#4 Авг. 25, 2012 17:42:51

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Бинарную строку в список интов

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



Офлайн

#5 Авг. 25, 2012 20:44:30

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Бинарную строку в список интов

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

Офлайн

#6 Авг. 25, 2012 22:36:04

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Бинарную строку в список интов

Офлайн

#7 Авг. 25, 2012 23:52:57

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Бинарную строку в список интов

Сразу отвечу на вопрос, почему бы это не сделать с помощью struct: скорость может отличаться на порядок и больше.

Офлайн

#8 Авг. 26, 2012 00:01:43

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Бинарную строку в список интов

Андрей Светлов
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 (Авг. 26, 2012 00:02:49)

Офлайн

#9 Авг. 26, 2012 13:09:04

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Бинарную строку в список интов

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



Офлайн

#10 Авг. 26, 2012 14:56:13

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Бинарную строку в список интов

Андрей Светлов
Сделайте патч, кто мешает?
Наф надо. Вы, когда вам что-то не нравится, например, в отечественном авто, делаете патч и отправляеет производителю, который на него болт кладет?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version