Найти - Пользователи
Полная версия: генерация числа размером в 512 бит
Начало » Python для новичков » генерация числа размером в 512 бит
1 2
pochechyev
приветствую!

есть задача - необходимо сгенерировать число определенного размера, например 512 бит.

какие будут предложения ? :)
сам придумать ничего не смог, гугл пока не помог, но я продолжаю поиски.
pasaranax
что-то вроде random.randrange(2 ** 512) ?
pochechyev
pasaranax
что-то вроде random.randrange(2 ** 512) ?
я думаю что нет, потому что это будет число от 0 до 2** 512, а 0, 10 или 100 это не 512 бит.

еще варианты?
Ed
random.randint(1 << 511, (1 << 512) - 1)
pochechyev
:)
варианты появились, а вот как проверить что это именно 512 бит ? )))
Ed
К результату применить операцию & (1 << 511) я полагаю :)
pasaranax
ну тогда random.randrange(2 ** 511, 2 ** 512)
Андрей Светлов
Ребята, вы вообще о чем? Есть два разных понятия: число само по себе и его битовое представление в определенном формате. Как я понял, неявно предполагается, что это классическое целое в дополнительном коде, двоичное представление, LSB, размером в 64 байта.
Биты имеет смысл считать только если определились с формой двоичной записи. И интересны они становятся только при побитовом (побайтовом) доступе.
Ed
Я понял задачу как сгенерить число, битовое представление которого без ведущих нулей, сконверченое в строку, занимает некое количество символов.
GDK
А я решил что ему надо (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
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB