Я ищу, чтобы сравнить биты хеша в Python3, как часть системы Hashcash. Так, например, я хочу знать, если первые N битов в SHA256 хеша 0.Какой самый быстрый способ сравнить бит хэша в Python3?
Прямо сейчас, я это делаю на основе шестнадцатеричном версии
if newhash.hexdigest()[0:4] == '0000'
Но это не позвольте мне быть таким же гранулированным, как я хочу - я бы предпочел сравнить исходные биты, что позволяет мне более точно сравнивать количество совпадающих 0.
я получить битовые значения для сравнения с помощью свернутой хмеля
bin(int(h.hexdigest(), 16))[2:]
, но это, кажется, что это не может быть самым быстрым/правильный способ сделать это.
Я оценил бы какие-либо рекомендации на правом/правильный способ сделать это;)
Спасибо,
-CPD
Подсчет ведущих нулей ([поиск наиболее значимого битового набора] (http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogObvious)) может быть оптимизирован относительно сравнения бит в целом. – jfs