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.
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
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]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,…
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…