PetaByte Posted May 4, 2013 at 12:02 AM Report #505781 Posted May 4, 2013 at 12:02 AM (edited) Boa Noite, Estou com uma certa dificuldade num pequenito problema. Tenho de converter de decimal para hexadecimal, mas preferi não usar as funções já pré-definidas no PHP. Quero substituir alguns números por letras. Por exemplo: 53120 (decimal) = CF80 (hexadecimal) . O resultado no programa actualmente é: 121580. Tenho de substituir : 10 = A 11 = B 12 = C 13 = D 14 = E 15 = F Queria substituir tudo de uma vez, em vez de 1 por 1. Alguém me consegue ajudar? Obrigado. <html> <head> <title>Sistemas de Conversão</title> <style type ="text/css"> body { font-family: Cambria; } </style> </head> <body> <br><br><br> <center><form method="post" action="conversao.php"> Escolha o Sistema de Conversão: <select name="op"> <option>Decimal para Binário</option> <option>Decimal para Octal</option> <option>Decimal para Hexadecimal</option> <option>Binário para Decimal</option> </select> <br><br> Insira o valor: <input min="0" max="1000000" type="number" name="val" autofocus required> <input type="submit" name="aa" value="Calcular"> </form></center> <? $op = $_POST['op']; $num = $_POST['val']; $decimal; $binario; //Chamada das funções if($num==NULL) { echo ""; } else{ if($op == "Decimal para Binário"){ $resultado=dec_bin($num); echo "<center>O resultado da conversão é: $resultado</center>"; } else if($op == "Decimal para Octal"){ $resultado=dec_octal($num); echo "<center>O resultado da conversão é: $resultado</center>"; } else if($op == "Decimal para Hexadecimal"){ $resultado=dec_hexa($num); /*$procurada1 = "12"; $psubstituir = "C"; $falterada = str_replace($procurada, $psubstituir, $resultado); echo "Frase inicial -> $resultado<br>"; echo "Frase alterada -> $falterada";*/ echo "<center>O resultado da conversão é: $resultado</center>"; } else{ $resultado=bin_dec($num); echo "<center>O resultado da conversão é: $resultado</center>"; } } function dec_bin($decimal) { $binario = ""; while($decimal != 0) { $resto = $decimal % 2; $decimal = floor($decimal / 2); $binario = $resto.$binario; } return $binario; } function dec_octal($decimal) { $octal = ""; while($decimal != 0) { $resto = $decimal % 8; $decimal = floor($decimal / 8); $octal = $resto.$octal; } return $octal; } function dec_hexa($decimal) { $hexa = ""; while($decimal != 0) { $resto = $decimal % 16; $decimal = floor($decimal / 16); $hexa = $resto.$hexa; } return $hexa; } ?> </body> </html> Edited May 5, 2013 at 08:11 AM by brunoais geshi
HappyHippyHippo Posted May 4, 2013 at 01:27 AM Report #505786 Posted May 4, 2013 at 01:27 AM que queres dizer com "todos de uma vez em vez de um por um ?" IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
anolsi Posted May 4, 2013 at 12:02 PM Report #505809 Posted May 4, 2013 at 12:02 PM Acho que isto te pode ajudar a implementar o algoritmo que pretendes: http://www.quashnick.net/geek_stuff/HEX2DEC.html "Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."Não respondo a questões por PM que possam ser colocadas no fórum!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now