Hexadecimal/Decimal

Oi gente como vai td bem?

Seguinte…gostaria de saber se existe alguma maneira mais simples de fazer um conversão meio louca decimal pra hexadecimalda seguinte maneira:

O usuário entra com o valor 30, em decimal, e convertemos esse valor para 30 em hexadecimal.

Outro exemplo, o usuário entra com um valor 15 em decimal e converte para 15 em hexadecimal.

Sempre de decimal para hexadecimal.

Na verdade poderia usar um switch case e utilizar um lógica somando valores, porém o código vai fikar gigantesco. Existe alguma maneira mais simples?

Valeu!

Olá techelex. Isso te ajuda???

int decimal = 105;  
String hexadecimal = Integer.toHexString(decimal);

abs

Então thundercas, quando eu pego o valor int valendo 105, eu preciso que minha saída seja 105 em hexadecimal. Apesar de ser um valor grande.

Imaginemos a situação. Eu entro com o valor em decimal 10. Este comando gera na saída o valor “A” em hexadecimal, porém eu preciso que minha saída seja “10” em hexadecimal.

Manjou??

Ora, o valor 10 em decimal é A em hexadecimal.

Se você quer pegar a string 10 em hexadecimal (cujo valor em decimal é 16) e imprimi-la como 10, ou então pegar a string 105 em hexadecimal (cujo valor em decimal é 261) você precisa usar um método que converte uma string hexadecimal em um número, e então voltar.

Exemplo:

String s = "105";
int x = Integer.parseInt (s, 16); // considera que "s" é um valor hexadecimal
System.out.printf ("%x %n", x); // imprime "105", como esperado

Como o cara disse acima, 10 em Hexa é A.

Como 105 em Hexa é 0x69.

Também não entendi muito a duvida.

Seguinte… eu quero fazer uma “transposição”.

O valor que eu receber em decimal eu "transponho"pra hexadecimal.

Por exemplo int i = 20;

apos o comando de transposição, tenho o valor ‘20’ em hexadecimal…que se eu for converter pra decimal da ‘32’.

Manjou??

Valeu!

Olha só, você até agora não conseguiu explicar direito sua dúvida, mas colocarei dois método um que converte de decimal para hexademcia e outro que converte de hexademial para decimal.

    public String decimalToHexadecimal(int number) {

        List<String> vet = new ArrayList<String>();
        StringBuilder result = new StringBuilder();

        do {
            if (number % 16 < 10) {
                String aux = "" + number % 16;
                vet.add(aux);
            } else {
                switch (number % 16) {
                    case 10 :
                        vet.add("A");
                        break;
                    case 11:
                        vet.add("B");
                        break;
                    case 12:
                        vet.add("C");
                        break;
                    case 13:
                        vet.add("D");
                        break;
                    case 14:
                        vet.add("E");
                        break;
                    case 15:
                        vet.add("F");
                }
            }
            number = (int) number / 16;
        } while (number != 0);

        for (int i = vet.size() - 1; i >= 0; i--)
            result.append(vet.get(i));

        return String.format("%s", result);
    }
public String hexadecimalToDecimal(String hexa) {

        int size = hexa.length();
        int result = 0;

        for (int i = 0; i < hexa.length(); i++) {
            switch (hexa.charAt(i)) {
                case '1':
                    result += (1 * Math.pow(16, --size));
                    break;
                case '2':
                    result += (2 * Math.pow(16, --size));
                    break;
                case '3':
                    result += (3 * Math.pow(16, --size));
                    break;
                case '4':
                    result += (4 * Math.pow(16, --size));
                    break;
                case '5':
                    result += (5 * Math.pow(16, --size));
                    break;
                case '6':
                    result += (6 * Math.pow(16, --size));
                    break;
                case '7':
                    result += (7 * Math.pow(16, --size));
                    break;
                case '8':
                    result += (8 * Math.pow(16, --size));
                    break;
                case '9':
                    result += (9 * Math.pow(16, --size));
                    break;
                case 'A':
                    result += (10 * Math.pow(16, --size));
                    break;
                case 'B':
                    result += (11 * Math.pow(16, --size));
                    break;
                case 'C':
                    result += (12 * Math.pow(16, --size));
                    break;
                case 'D':
                    result += (13 * Math.pow(16, --size));
                    break;
                case 'E':
                    result += (14 * Math.pow(16, --size));
                    break;
                case 'F':
                    result += (15 * Math.pow(16, --size));
            }
        }

        return String.valueOf(result);
    }

Acho que isso deva te ajudar!
Ah não fique pensando muito em qual vai ser o temanho do seu código, tente primeiro criar um código que solucione o seu objetivo e depois de criado e testado tente rever o código e tente buscar diminuir-lo, se possível.

[quote=tetchelex]Seguinte… eu quero fazer uma “transposição”.

O valor que eu receber em decimal eu "transponho"pra hexadecimal.

Por exemplo int i = 20;

apos o comando de transposição, tenho o valor ‘20’ em hexadecimal…que se eu for converter pra decimal da ‘32’.

Manjou??

Valeu![/quote]

vc quer q um valor seja exibido em decimal na tela mas que se comporte como um hexadecimal na hora de ser convertido?

[quote=tetchelex]Seguinte… eu quero fazer uma “transposição”.

O valor que eu receber em decimal eu "transponho"pra hexadecimal.

Por exemplo int i = 20;

apos o comando de transposição, tenho o valor ‘20’ em hexadecimal…que se eu for converter pra decimal da ‘32’.

Manjou??

Valeu![/quote]

Primeiro:

int i = 20;

O Java entende isso como você esta declarando uma variavel i com o valor 20 em DECIMAL.

Se você quiser fazer este valor em Hexa, você teria que fazer assim:

int i = 0x20;

E mesmo assim, este valor em Decimal, seria 32.

[quote=tetchelex]Então thundercas, quando eu pego o valor int valendo 105, eu preciso que minha saída seja 105 em hexadecimal. Apesar de ser um valor grande.

Imaginemos a situação. Eu entro com o valor em decimal 10. Este comando gera na saída o valor “A” em hexadecimal, porém eu preciso que minha saída seja “10” em hexadecimal.

Manjou??[/quote]

sim, mas isso não precisa de conversão. converta para string e pronto.


public String toWirdHexa(int value){

   return Integer.toString(value);
}

Agora, para que raios vc usaria isso … não faço a minima ideia,…

Uma forma de exportação proprietária de um sistema específico…
Valeu!

Mais um cara que confunde a ideia (o número 100) com a sua representação (em decimal “100”, em hexadecimal “64”, em japonês e chinês “百”, etc.)…

Em português, chama-se a ideia de “número” e a representação de “numeral”. Nunca confunda a ideia com sua representação.

[quote=tetchelex]Uma forma de exportação proprietária de um sistema específico…
Valeu![/quote]

AKA Gambiarra.
bem me parecia :?

Afinal, essa dúvida foi esclarecida ou não?

Esclarecida… o arquivo é em simbolos asc II…no text pad mapeio ele em hexadecimal… porém o cabeçalho é hexa e a informação em decimal…mas a informação decimal deve aparecer gambiarradamente em hexa;; do tipo 10 e 0X10…
Mas deu certo…fiz uma lógica somando inteiros e fuincionou!
ficou feio mas ta legal…

Por acaso era isso que você queria fazer:

int valor = 20;
int resultado = Integer.parseInt("" + valor, 16);