Перевод из одной системы счисления в другую Java

313
27 октября 2017, 11:37

Требуется написать программу для перевода числа из X системы счисления в Y (2-16). Нельзя использовать BigInteger и сторонние библиотеки для перевода. Сделал только от (2-10) и наоборот. Вопрос вот в чем: как перевести из 16-ой ,скажем в 10-ю? Ведь в 16-ой системе используются буквы.

Начал рассуждать так:

Есть массив букв:

public char[] arr = {'A', 'B', 'C', 'D', 'E', 'F'};

Далее идет перебор (NumStrText - получаемое на вход число):

    char [] NumStrTxt = txtBoxNum.getText().toCharArray ();
            for (int i = 0; i < arr.length; i++){
                for (int j = 0; j < NumStrTxt.length; j++){
                    if(arr[i] == NumStrTxt[j]){
                        String constNum = i + 10 + "";
                        NumStrTxt[j] = constNum.charAt(i);
                    }
            }
     }

Логика такова: хотелось бы положить в массив NumStrTxt(Char) 2 элемента при обнаружении сходства с массивом букв(arr).Но проблема в том что charAt() берет только один элемент, а мне надо 2 так как Строка constNum реализует соответствие цифре A-10 B-11 и.т.д. Возможно есть другие решения задачи?

Answer 1

Пусть шестнадцатеричное число записано в строку. Зная длину строки, можно проходя её посимвольно слева направо умножать численное значение символа на соответствующую степень основания системы счисления. Можно реализовать с помощью switch по символу. Конечно, этот подход работает и для перевода из других с.с. в десятичную.

READ ALSO
Разместить String,String в лист

Разместить String,String в лист

Требуется разместить

406
Как вставить текст в textarea через webview

Как вставить текст в textarea через webview

Есть Webview, он грузит страницу html в которой есть форма с textarea

329
Взаимная блокировка процессов [требует правки]

Взаимная блокировка процессов [требует правки]

Ошибка в строке public class javaapplication16 implements Runnable, не пойму в чем соль

260