Mam ciąg znaków, który może być liczbą heksadecymalną z prefiksem "0x" lub liczbą dziesiętną bez specjalnego prefiksu z wyjątkiem prawdopodobnie znaku minus. "0x123" znajduje się w bazie 16, a "-298" w bazie 10.jak parsować szesnastkowy lub dziesiętny int w Pythonie
Jak przekonwertować to na int lub długie w Pythonie?
Nie chcę używać eval(), ponieważ jest niebezpieczne i przesadne.
Dlaczego eval jest niebezpieczne? Czy źli ludzie będą wymyślać te cyfry? Kto ma dostęp do tych ciągów? Czy są niegodne zaufania? –
eval jest niebezpieczne, ponieważ pozwala na wykonanie dowolnego kodu. Jeśli otrzymujesz ciąg z zaufanego źródła, wciąż jest niebezpieczny, tak się składa, że polegasz na tym zaufanym źródle, aby nie skorzystać z tego. Jeśli zawsze kontrolujesz ciąg znaków, dlaczego był to ciąg? –
Twój program python jest dostępny w formie źródłowej - jest to również "kod arbitralny". Po co narysować linię pomiędzy jednym zestawem źródeł Pythona a innym? Eval jest nie mniej bezpieczny niż uruchamianie programu Python. –