Di solito questo è fatto in questo modo:
- init risultato con 0
- per ogni carattere nella stringa fare questo
- risultato = risultato * 10
- ottenere la cifra dal carattere ('0' è di 48 ASCII (o 0x30), quindi basta sottrarre che dal codice ASCII per ottenere la cifra)
- aggiungere la cifra al risultato
- risultato restituito
Edit: Questo funziona per qualsiasi base se si sostituisce 10 con la base corretta e regolare l'ottenimento della cifra dal carattere corrispondente (dovrebbe funzionare come è per le basi più basse di 10, ma avrebbe bisogno di un po 'di regolazione per basi più alte - come esadecimale - poiché le lettere sono separate da numeri di 7 caratteri).
Edit 2: Char a cifre valore di conversione: caratteri '0' a '9' hanno valori ASCII da 48 a 57 (0x30 a 0x39 in hexa), così al fine di convertire un carattere al suo valore cifre un semplice la sottrazione è necessaria. Di solito si fa in questo modo (dove ord è la funzione che dà il codice ASCII del carattere):
digit = ord(char) - ord('0')
Per basi numero superiore le lettere vengono utilizzati come 'cifre' (AF in esa), ma le lettere partono da 65 (esa 0x41) che significa che c'è un gap che dobbiamo spiegare:
digit = ord(char) - ord('0')
if digit > 9 then digit -= 7
Esempio: 'B' è 66, così ord ('B') - ord ('0') = 18. da 18 è più grande di 9 sottraiamo 7 e il risultato finale sarà di 11 - il valore della 'cifra' B.
una cosa da notare qui - esimo funziona solo con lettere maiuscole, quindi il numero deve essere prima convertito in maiuscolo.
Si potrebbe apri 'src.zip' e vedi di persona (per una particolare implementazione). –
Ho aggiornato la risposta con un esempio sulla sottrazione dei codici – rslite