Форум сайта python.su
4
py.user.next
Ясно, спасибо. Как всегда, учиться приходится долго, а хочется всего и сразу :-)
Не все данные являются чистыми; во многих данных наряду с чистыми участками лежит мусор, который не используется, который там для забивки пространства.Ну, конкретно в данном случае “свободное” место просто нулями забивается.
Вот ты знаешь, что они просто могут различаться? Это маловероятно, что ты это знаешь.Знаю, в struct.unpack используют ‘<’ и ‘>’ для этого. Но сами эти понятия мне действительно мало о чем говорят.
И вот чтобы это всё знать, это нужно начинать с простых учебных задачек про работу с битами через битовые операции.Кстати, можете подсказать, что значит следующее:
int code=791651; packed_code[0] = code & 0x0000ff; packed_code[1] = (code & 0x00ff00)>>8; packed_code[2] = (code & 0xff0000)>>16;
Отредактировано vanvanov (Ноя. 28, 2019 14:04:18)
Офлайн
253
Без знания С распаковывать данные практически невозможно. Питон для этого использует по сути сишные подходы. Приведенная конструкция элементарна. В одном целом числе хранится три целых числа по одному байту их вырезают битовой маской и побитово сдвигают чтобы поместить в обычные переменные.
Названия переменных неудачные code это как раз packed. packed_codes это как раз unpacked_codes
Отредактировано doza_and (Ноя. 28, 2019 20:22:32)
Офлайн
857
vanvanovЭто наложение битовых масок (для обнуления битов) и взятие определённых частей числа в битовом представлении.
Кстати, можете подсказать, что значит следующее:int code=791651;
packed_code[0] = code & 0x0000ff;
packed_code[1] = (code & 0x00ff00)>>8;
packed_code[2] = (code & 0xff0000)>>16;
code & 0x0000ff
code & 0xff
code & 256
11000000111001
00000011111111
11000000111001
И
00000011111111
=
00000000111001

Отредактировано py.user.next (Ноя. 29, 2019 03:02:16)
Офлайн