Python: создание одного целого числа из двух целых чисел? - PullRequest
3 голосов
/ 03 июля 2011

Я ищу простой алгоритм, который "объединяет" два 2-байтовых целых числа в одно уникальное 4-байтовое целое число.

Два двухбайтовых целых числа являются целыми положительными числами в диапазоне 0..65535.

Я хочу создать одно 4-байтовое целое число, которое является точной комбинацией обоих, таким образом, чтобы было легко:

(1) с учетом двух 2-байтовых целых чисел -> вычислить значение этого 4-байтового целого числа.

(2) , учитывая 4-байтовое целое число -> анализирует содержимое двух 2-байтовых целых чисел.

Есть идеи, как этого добиться в python?

Ответы [ 2 ]

16 голосов
/ 03 июля 2011

Как насчет:

def combine(n, m):
    return (n << 16) | m

def extract(c):
    return (c >> 16), c & 0xffff

Это решение помещает одно из 2-байтовых целых в верхнюю половину 32-разрядного слова, а другое - в нижнюю половину.Чтобы извлечь значения, просто возьмите верхнюю половину слова (c >> 16) и нижнюю половину (c & 0xffff).

8 голосов
/ 03 июля 2011
>>> i1, i2 = 345, 12
>>> i1 * 0x10000 + i2
22609932
>>> divmod(22609932, 0x10000)
(345, 12)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...