Вместо того, чтобы набирать 0x1009, чтобы получить 4105, я хочу, чтобы математика это делала, математика, которая быстра для больших чисел. Ниже показано, что int (j, 16) не так быстр, как ввод 0xnum в командной строке, поэтому для выполнения операции по преобразованию HEX в его значение INT должна быть быстрая математика.
start = time.time()
l=getbase16asifintisbase16(2**50000)
end = time.time()
print("Time to get int 16 of 0x2*50000: ", end - start)
Time to get int 16 of 0x2*50000: 1.6465599536895752
start = time.time()
j=str(2**50000)
int(j,16)
end = time.time()
print("Time to get int 16 of 0x2*50000: ", end - start)
Time to get int 16 of 2*50000: 0.003618955612182617
start = time.time()
0x2**50000 # This doesn't work, it's for brevity, in reality I pasted in the 2**50000 after 0x in the actual operation
end = time.time()
print("Time to get int 16 of 0x2*50000: ", end - start)
Time to get int 16 of 2*50000: 0.0000431537628173828125
Как вы можете видеть выше, ввод 0x на cli быстрее, чем int all, и быстрее, чем вызов функции, полученный мной из другого поста. Я надеюсь, что кто-то может показать мне более быструю математику, чтобы преобразовать гекс в int. Скажем, у меня есть 1009. Я хочу получить его основание 16 из int ('1009', 16) так же быстро, как набрать 0x1009 в кли. Если бы приведенная выше функция могла быть улучшена, чтобы быть быстрее, это было бы здорово. Спасибо.
def getbase16asifintisbase16(orig):
num=orig
result = 0
i=0
while num != 0:
result += (num % 10) * (16 ** i)
num //=10
i += 1
return result
getbase16asifintisbase16(1009)
4105
Является ли код из другого поста быстрым для небольших чисел, но медленным для больших чисел, мне интересно, могу ли я ускорить вызов функции выше
int ('число ', 16) не так быстро, как в случае ввода 0xnumber (число является действительным числом). Я использовал функцию, опубликованную здесь из другого поста ответа, но она приводит к медленным результатам для больших чисел из-за циклических циклов, поэтому мне интересно, как ускорить его для больших чисел. Я также опубликовал результаты по скорости, показывающие, что 0x быстрее, чем int. Это говорит мне, что int и 0x используют математику, и мне нужна математика, похожая на приведенную выше функцию, которая работает быстро для чисел, которые очень, очень большие. Спасибо.
Итак, я прошу математику, которая, как мы надеемся, не использует циклы или очень и очень быстро выполняет операции, такие как 0x1009, чтобы получить 4105. Я даю функции int, 1009, этовыводит 4105. За исключением того, что я хотел бы дать ему большие числа, такие как 2 ** 3321925, длиной в миллион цифр.