ravelont 3 #1 Postado 24 Março, 2011 Agora o que vocês irão fazer com ambas é de sua imaginação. Decimal / Binário public static void converter (int valor_a) { // método converte decimal em binário a = valor_a; int calculo_converter; String binario = ""; for (int b = a; b >= 0; b/=2){ // divide o valor divisivel por 2. calculo_converter = b%2; // calcula o resto e gera os números binários. binario += Integer.toString(calculo_converter); // converte o calculo p/ string. if (b == 0){ break; } } // fim do for. for (int x = binario.length()-1; x >=0; x--){ // inverter o binário binario_reverso += binario.charAt(x); } } public static void reverter (String binario){ // método converte binário em decimal String c = binario; int e = c.length(); // ultima matriz. int reverter, calculo_reverter=0; for (int d = 0; d <= c.length()-1; d++){ e--; // redução de matriz reverter = Integer.parseInt(Character.toString(c.charAt(d))); // pegar o primeiro binário (converte char p/ string, string p/int) calculo_reverter = reverter*2; // calcula binario*2 decimal += (int)(Math.pow(calculo_reverter,e)); // potencializa calculo*matriz convertendo para decimal. } } Criptografia Cifra: public static void Converter(String valor_a){ valor = valor_a; int tamanho = valor.length(); for (int a = 0; a <= valor.length()-1; a++){ tamanho--; converter_palavra += Integer.toString(tamanho + 1); } } public static void Reverter(String teste){ String valorB = teste; int reverter, calculo; for (int b = valorB.length()-1; b >= 0; b--){ reverter = Integer.parseInt(Character.toString(valorB.charAt()); calculo = reverter -1; reverter_palavra += valor.charAt(calculo); } } Compartilhar este post Link para o post Compartilhar em outros sites
Raphael Carnaúba 1 #2 Postado 26 Março, 2011 (editado) Eaí blza? acho que tem um probleminha no código. Converter Dec/Bin: Decimal: 20 -> Binario: 010100 (Pela calculadora: 10100) Reverter Bin/Dec: Binario: 010100 -> Decimal: 21 (Wtf? ) Abraços, Carnaúba EDIT: Consegui arrumar, você tava fazendo: 100 = ((0*2)^0) = 1, (0*2)^1 = 0, (1*2)^2 = 4, somando = 5 o correto seria 4. arrumando: 100 = 0*(2^0) + 0*(2^1) + 1*(2^2), somando = 4 public static void reverter (String binario) { String c = binario; int e = c.length(); int reverter, calculo_reverter=0; for (int d = 0; d < c.length(); d++) { e--; // redução de matriz reverter = Integer.parseInt(Character.toString(c.charAt(d))); calculo_reverter += reverter*(int)Math.pow(2, e); decimal = calculo_reverter; } } Editado 26 Março, 2011 por Raphael Carnaúba Compartilhar este post Link para o post Compartilhar em outros sites
ravelont 3 #3 Postado 26 Março, 2011 (editado) Realmente ali errei na precedência do cálculo, obrigado! Editado 26 Março, 2011 por ravelont Compartilhar este post Link para o post Compartilhar em outros sites