Форум сайта python.su
приветствую!
есть задача - необходимо сгенерировать число определенного размера, например 512 бит.
какие будут предложения ? :)
сам придумать ничего не смог, гугл пока не помог, но я продолжаю поиски.
Офлайн
что-то вроде random.randrange(2 ** 512) ?
Офлайн
pasaranaxя думаю что нет, потому что это будет число от 0 до 2** 512, а 0, 10 или 100 это не 512 бит.
что-то вроде random.randrange(2 ** 512) ?
Офлайн
random.randint(1 << 511, (1 << 512) - 1)
Отредактировано (Сен. 17, 2009 22:00:56)
Офлайн
:)
варианты появились, а вот как проверить что это именно 512 бит ? )))
Офлайн
К результату применить операцию & (1 << 511) я полагаю :)
Офлайн
ну тогда random.randrange(2 ** 511, 2 ** 512)
Отредактировано (Сен. 17, 2009 22:36:29)
Офлайн
Ребята, вы вообще о чем? Есть два разных понятия: число само по себе и его битовое представление в определенном формате. Как я понял, неявно предполагается, что это классическое целое в дополнительном коде, двоичное представление, LSB, размером в 64 байта.
Биты имеет смысл считать только если определились с формой двоичной записи. И интересны они становятся только при побитовом (побайтовом) доступе.
Офлайн
Я понял задачу как сгенерить число, битовое представление которого без ведущих нулей, сконверченое в строку, занимает некое количество символов.
Отредактировано (Сен. 18, 2009 09:36:06)
Офлайн
А я решил что ему надо (2**512)-1 - это когда все 512 бит будут заполнены единицами. Ну в двоичной форме записи конечно.
print (bin(2**512-1))
print (oct(2**512-1))
print (hex(2**512-1))
print (2**512-1)
>>>
0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
0377777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777L
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffL
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084095
>>>
Отредактировано (Сен. 18, 2009 10:34:53)
Офлайн