En Python, una string se puede convertir en un número entero usando los siguientes métodos:
Método 1: Usando la función int() incorporada:
Si su string contiene un entero decimal y desea convertirlo en un int, en ese caso, pase su string a la función int() y convertirá su string en un entero decimal equivalente.
Sintaxis: int(string, base)
Parámetro: Esta función toma los siguientes parámetros:
- string: consta de 1, 0 o dígitos hexadecimales, octales, etc.
- base : (valor entero) base del número.
Devoluciones: Devuelve un valor entero, que es equivalente
a una string en la base dada.
Código:
Python3
# Initialising a string # with decimal value string = "100" # Show the Data type print(type(string)) # Converting string into int string_to_int = int(string) # Show the Data type print(type(string_to_int))
Producción:
<class 'str'> <class 'int'>
De forma predeterminada, int() espera que el argumento de string represente un entero decimal. Suponiendo, en cualquier caso, que pase una string hexadecimal a int(), entonces mostrará ValueError. En tales casos, puede especificar la base del número en la string.
Código:
Python3
# Initialising a string # with hexadecimal value string = "0x12F" # Show the Data type print(type(string)) # Converting hexadecimal # string into int string_to_int = int(string, base=16) # Show the Data type print(type(string_to_int))
Producción:
<class 'str'> <class 'int'>
Método 2: Usando la función definida por el usuario:
También podemos convertir una string en un int creando nuestra propia función definida por el usuario.
Acercarse:
- comprobaremos si el número tiene algún signo «-» o no, ya que si es un número negativo, tendrá el signo «-«. Si contiene el signo «-«, comenzaremos nuestra conversión desde la segunda posición que contiene números.
- Cualquier número, supongamos 321, se puede escribir en la estructura: 10**2 * 3 + 10**1*2 + 10**0*1
- De manera similar, dividimos cada uno de los números de entrada usando ord(argumento), ord(‘0’) devolverá 48, ord(‘1’) devolverá 49 y así sucesivamente.
- La lógica aquí es que ord(‘1’) – ord(‘0) = 1, ord(‘2’) – ord(‘0’) = 2 y así sucesivamente, lo que nos da el número significativo que se va a obtener del dado número de entrada.
- Finalmente, el resultado que obtenemos de la función es un número integral que cambiamos de la string dada.
Código:
Python3
# User-defined function to # convert a string into integer def string_to_int(input_string): output_int = 0 # Check if the number contains # any minus sign or not, # i.e. is it a negative number or not. # If it contains in the first # position in a minus sign, # we start our conversion # from the second position which # contains numbers. if input_string[0] == '-' : starting_idx = 1 check_negative = True else: starting_idx = 0 check_negative = False for i in range(starting_idx, len(input_string)): # calculate the place value for # the respective digit place_value = 10**(len(input_string) - (i+1)) # calculate digit value # ord() function gives Ascii value digit_value = ord(input_string[i]) - ord('0') # calculating the final integer value output_int += place_value * digit_value # if check_negative is true # then final integer value # is multiplied by -1 if check_negative : return -1 * output_int else: return output_int # Driver code if __name__ == "__main__" : string = "554" # function call x = string_to_int(string) # Show the Data type print(type(x)) string = "123" # Show the Data type print(type(string_to_int(string))) string = "-123" # Show the Data type print(type(string_to_int(string)))
Producción:
<class 'int'> <class 'int'> <class 'int'>