Mi sembra che ci sia piu' di qualcosa che non va ...

Ad esempio, utilizzi un ciclo per trattare i singoli caratteri della stringa, che puo' essere arbitrariamente lunga ... ma il risultato lo aggiungi ad una variabile Integer, che e' limitata al valore di 32767 ...

Poi restituisci la Integer mentre la funzione restituisce una Long ...

Insomma, ci sono parecchie incongruenze ...

Quello che ti voglio dire e' che la funzione potrebbe essere riscritta e migliorata parecchio, ma per darti una mano dovresti darmi le specifiche precise della funzione ...

Ovvero

1) deve ricevere una stringa di lunghezza qualsiasi?

2) in quale formato? Puo' essere una qualsiasi stringa esadecimale?

3) il valore massimo restituito deve essere un long? Un integer? Devono essere considerati tutti i byte?