Mam tablicę ciągów, które reprezentują liczby binarne (bez zer wiodących), które chcę przekonwertować na odpowiadające im liczby podstawowe 10. Rozważać:
binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary 11 becomes integer 3 etc.
Jaki jest najlepszy sposób postępowania? Odkrywałem java.lang.number. * Bez znalezienia bezpośredniej metody konwersji. Integer.parseInt(b)
zwraca łańcuchowi liczbę całkowitą EQUAL ... np. 1001 staje się 1,001 zamiast 9 ... i nie wydaje się zawierać parametru dla podstawy wyjściowej. toBinaryString
czy konwersja jest w złym kierunku. Podejrzewam, że będę musiał wykonać wieloetapową konwersję, ale nie mogę znaleźć odpowiedniej kombinacji metod lub podklas. Nie jestem też pewien, w jakim stopniu zera wiodące lub ich brak będą problemem. Czy ktoś ma jakieś dobre wskazówki, aby mi wskazać?
Odpowiedzi:
Musisz określić podstawę . Jest to przeciążenie,
Integer#parseInt()
które pozwala.źródło
To może zadziałać:
źródło
for
pętla i obliczanie nowejresult
zmiennej nie jest poprawne.działa dobrze, jeśli masz do czynienia z liczbami dodatnimi, ale jeśli chcesz poradzić sobie z liczbami ze znakiem, może być konieczne podpisanie rozszerzenia ciągu, a następnie konwersji na Int
Mam nadzieję że to pomogło!
źródło
źródło
Chyba jeszcze bardziej się nudzę! Zmodyfikowano odpowiedź Hassana, aby działała poprawnie.
źródło
U mnie dostałem NumberFormatException podczas próby radzenia sobie z liczbami ujemnymi. Użyłem poniższego dla liczb ujemnych i dodatnich.
źródło
Poprawiona wersja Javy Integer.parseInt (tekst) do pracy z liczbami ujemnymi:
źródło
Uwielbiam pętle! Yay!
Pętla While z akumulatorem, od lewej do prawej (
l
nie zmienia się):Od prawej do lewej z 2 zmiennymi pętli, zainspirowanymi Convert boolean to int w Javie (absolutnie okropne):
Nieco bardziej rozsądna realizacja:
Czytelna wersja: str
źródło
Jeśli martwisz się o wydajność
Integer.parseInt()
iMath.pow()
są zbyt drogie. Możesz użyć manipulacji bitami, aby zrobić to samo dwa razy szybciej (na podstawie mojego doświadczenia):Gdzie
Wynik:
źródło