pochechyev
Сен. 17, 2009 20:34:39
приветствую!
есть задача - необходимо сгенерировать число определенного размера, например 512 бит.
какие будут предложения ? :)
сам придумать ничего не смог, гугл пока не помог, но я продолжаю поиски.
pasaranax
Сен. 17, 2009 21:06:36
что-то вроде random.randrange(2 ** 512) ?
pochechyev
Сен. 17, 2009 21:45:01
pasaranax
что-то вроде random.randrange(2 ** 512) ?
я думаю что нет, потому что это будет число от 0 до 2** 512, а 0, 10 или 100 это не 512 бит.
еще варианты?
Ed
Сен. 17, 2009 22:00:04
random.randint(1 << 511, (1 << 512) - 1)
pochechyev
Сен. 17, 2009 22:12:04
:)
варианты появились, а вот как проверить что это именно 512 бит ? )))
Ed
Сен. 17, 2009 22:22:57
К результату применить операцию & (1 << 511) я полагаю :)
pasaranax
Сен. 17, 2009 22:32:30
ну тогда random.randrange(2 ** 511, 2 ** 512)
Андрей Светлов
Сен. 18, 2009 03:37:20
Ребята, вы вообще о чем? Есть два разных понятия: число само по себе и его битовое представление в определенном формате. Как я понял, неявно предполагается, что это классическое целое в дополнительном коде, двоичное представление, LSB, размером в 64 байта.
Биты имеет смысл считать только если определились с формой двоичной записи. И интересны они становятся только при побитовом (побайтовом) доступе.
Ed
Сен. 18, 2009 09:33:12
Я понял задачу как сгенерить число, битовое представление которого без ведущих нулей, сконверченое в строку, занимает некое количество символов.
GDK
Сен. 18, 2009 10:23:08
А я решил что ему надо (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
>>>