При преобразовании строки python в int, например. a = int("123",10)
, (преобразовать строку «123» в целое число в базе 10) вызывается функция C.
Во-первых, он проверяет, что данная базовая счетные база> = 2 и < = 36, или 0. (ошибка в противном случае)
Затем она игнорирует все начальные пробелы. (Так что " 123" = "123"
),
и проверить, если номер отмечен как положительное '+'
, или отрицательным '-'
Когда основание равно 0, он проверяет, если строка начинается с '0x','0o', '0b', '0'
, и устанавливает базу соответственно (шестнадцатеричной, восьмеричной , двоичный, десятичный).
Обратите внимание, что если база не указана, то базой по умолчанию является 10 (десятичная).
Затем переходит к превращению массива символов в число, используя алгоритм, описанный в коде комментарии на link posted by Paul Kehrer
завершающих пробела также игнорируется, и ошибки приподняты, если needed-, например, если есть пространство в середине строки, за которой следует число, или если есть символ без номера.
Не могли бы вы предоставить функцию C, чтобы нам не пришлось искать ее сами? –
«Я хочу понять, как это работает, но я не понимаю, на каком языке он написан, и хочу, чтобы вы объяснили мне это, а не изучали его», - так я интерпретировал этот вопрос. –
@ TadhgMcDonald-Jensen, пожалуйста, подумайте о том, чтобы обновить ваш интерпретатор. – micgeronimo