Порядок байтов целых чисел в Python

На Вашем исходном репозитории: используйте рычаги, прежде чем каждый будет фиксировать (рычаг перед фиксацией для SVN, например)

В том рычаге, проверьте на существование по крайней мере одного варианта использования для каждого метода. Используйте соглашение для организации модульного теста, которую Вы могли легко осуществить через рычаг перед фиксацией.

На сервере интеграции компилируют все и проверяют regularely тестовое покрытие с помощью инструмента тестового покрытия. Если тестовое покрытие не составляет 100% для кода, блок никакая фиксация разработчика. Он должен отправить Вам тестовый сценарий, который покрывает 100% кода.

Только автоматические проверки могут масштабироваться хорошо на проекте. Вы не можете проверить все вручную.

у разработчика должно быть среднее для проверки, если его тестовые сценарии покрывают 100% кода. Тот путь, если он не фиксирует протестированных 100%, кодирует, это - его собственный отказ, не "ой, извините я забыл" отказ.

Помните: Люди никогда не делают то, что Вы ожидаете, они всегда делают то, что Вы осматриваете.

17
задан G Gordon Worley III 9 September 2009 в 14:20
поделиться

3 ответа

Python int имеет тот же порядок байтов, что и процессор, на котором он работает. Модуль struct позволяет преобразовывать байтовые BLOB-объекты в целые числа (и наоборот, а также некоторые другие типы данных) либо собственным, либо прямым порядком байтов, либо прямым порядком байтов, в зависимости от строки формата по вашему выбору: начните формат с @ или без символа порядка байтов, чтобы использовать собственный порядок байтов (и собственные размеры - все остальное использует стандартные размеры), '~' для собственного, '<' для прямого порядка байтов. , '>' или '!' для прямого порядка байтов.

Это побайтно, а не побитно; не совсем уверен, что вы подразумеваете под побитовой обработкой в ​​этом контексте, но я предполагаю, что это можно сделать аналогичным образом.

Для быстрой «массовой» обработки в простых случаях,

20
ответ дан 30 November 2019 в 11:32
поделиться

If you need to process your data 'bitwise' then the bitstring module might be of help to you. It can also deal with endianness between platforms (on the latest trunk build at least - to be released in the next few days).

The struct module is the best standard method of dealing with endianness between platforms. For example this packs and unpack the integers 1, 2, 3 into two 'shorts' and one 'long' (2 and 4 bytes on most platforms) using native endianness:

>>> from struct import *
>>> pack('hhl', 1, 2, 3)
'\x00\x01\x00\x02\x00\x00\x00\x03'
>>> unpack('hhl', '\x00\x01\x00\x02\x00\x00\x00\x03')
(1, 2, 3)

To check the endianness of the platform programmatically you can use

>>> import sys
>>> sys.byteorder

which will either return "big" or "little".

16
ответ дан 30 November 2019 в 11:32
поделиться

Check when?

When doing bitwise operations, the int in will have the same endianess as the ints you put in. You don't need to check that. You only need to care about this when converting to/from sequences of bytes, in both languages, afaik.

In Python you use the struct module for this, most commonly struct.pack() and struct.unpack().

2
ответ дан 30 November 2019 в 11:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: