Tengo una cadena que puede ser un número hexadecimal con el prefijo "0x" o un número decimal sin un prefijo especial, excepto posiblemente un signo menos. "0x123" está en la base 16 y "-298" está en la base 10.cómo analizar hexadecimal o decimal int en Python
¿Cómo puedo convertir esto a un int o largo en Python?
No quiero usar eval() ya que es inseguro y exagerado.
¿Por qué eval es inseguro? ¿Las personas malvadas van a introducir código en esos números? ¿Quién tiene acceso a esas cadenas? ¿No son dignos de confianza? –
eval no es seguro porque permite la ejecución de código arbitrario. Si obtiene la cadena de una fuente confiable, sigue siendo insegura, sucede que confía en que esta fuente confiable no la aproveche. Si siempre has tenido el control de la cuerda, ¿por qué fue una cuerda? –
Su programa python está disponible en formato fuente; también es un "código arbitrario". ¿Por qué trazar una línea entre un conjunto de fuentes de Python y otro? Eval no es menos seguro que ejecutar el programa Python en primer lugar. –