Форум сайта python.su
-1
Как можно узнать размер переменной? Есть готовая функция? На самом деле, надо у переменной выделить 672 битов, но для начала узнать бы ее длину.
С уважением, Zvyozdo4ka.
Офлайн
221
OMG. Откуда вы такое взяли?
672 бита, это 84 байта. Мне кажется вы либо говорите не имея понятия о чем, либо имеете ввиду нечто совсем другое.
Огласите полностью вашу задачу
Офлайн
-1
Задача из области криптографии. На самом деле, я начинала писать на С, но в С есть ограничение на размер переменной, а массивы для больших переменных писать, да еще умножения этих массивов - лень. Поэтому было решено воспользоваться Python для процедуры с большими числами. В общем, производятся операции над числами длиной от 256 бит, а потом от результата надо взять 672 бит слева. И эта последняя задача просто взрывает мозг. Подскажите, пожалуйста, как это сделать?
Офлайн
75
Реверс и остаток от деления на 2^672 ?
Отредактировано Singularity (Март 6, 2013 21:38:01)
Офлайн
-1
Singularity
Реверс и остаток от деления на 2^672 ?

Отредактировано zvyozdo4ka (Март 6, 2013 22:09:32)
Офлайн
857
>>> n = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa >>> b = n & ~(~0 << 10) >>> b 682 >>> bin(b) '0b1010101010' >>>
>>> n = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa >>> n.bit_length() 180 >>> n = n << 180 | n >>> n.bit_length() 360 >>> hex(n) '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' >>> b = n & ~(~0 << 300) >>> bin(b) '0b101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010' >>>
zvyozdo4ka
а потом от результата надо взять 672 бит слева
>>> n = 0xbbb >>> bin(n) '0b101110111011' >>> b = (n >> (n.bit_length() - 3)) & ~(~0 << 3) >>> bin(b) '0b101' >>>
Отредактировано py.user.next (Март 7, 2013 00:49:29)
Офлайн
-1
Большое спасибо за помощь. Теперь все работает.
Отредактировано zvyozdo4ka (Март 14, 2013 21:11:00)
Офлайн