Ответ 1
>>> import os
>>> "\x00"+os.urandom(4)+"\x00"
'\x00!\xc0zK\x00'
У меня есть buf = "\ x00\xFF\xFF\xFF\xFF\x00"
как я могу получить "\ xFF\xFF\xFF\xFF" randomize
>>> import os
>>> "\x00"+os.urandom(4)+"\x00"
'\x00!\xc0zK\x00'
bytearray(random.getrandbits(8) for _ in xrange(size))
Быстрее, чем другие решения, но не криптографически безопасны.
Альтернативным способом получения безопасной случайной последовательности байтов может быть использование модуля стандартной библиотеки secrets
, доступного с Python 3.6.
Пример, основанный на заданном вопросе:
import secrets
b"\x00" + secrets.token_bytes(4) + b"\x00"
Дополнительную информацию можно найти по адресу:https://docs.python.org/3/library/secrets.html
Вы хотите, чтобы средние 4 байта были установлены на случайное значение?
buf = '\x00' + ''.join(chr(random.randint(0,255)) for _ in range(4)) + '\x00'
На платформах POSIX:
open("/dev/urandom","rb").read(4)
Используйте /dev/random
для лучшей рандомизации.
Простой:
import functools, random, operator
functools.reduce(operator.add, ('%c' % random.randint(0, 255) for i in range(4)))
Мне нравится использовать библиотеку NumPy для этого.
import numpy as np
X_1KB = 1024
X_256KB = 256 * X_1KB
X_1MB = 1024 * 1024
X_4MB = 4 * X_1MB
X_32MB = 32 * X_1MB
X_64MB = 2 * X_32MB
X_128MB = X_1MB * 128
np.random.bytes( X_1MB )
from random import randint
rstr = ''.join( randint(0, 255) for i in range(4) )