Buono sconto 4% su Toner e Cartucce agli utenti AZpoint. SU Iomiricarico.it!!
Questo esempio realizza la conversione di un numero decimale, inserito da un utente nella textbox di un form, in uno dei tre formati binario, esadecimale ed ottale.
Il formato viene scelto da un menu a tendina tra i tre possibili, e una volta premuto il pulsante di conversione, il codice restituisce il valore convertito.
Per effettuare le conversioni in esadecimale e in ottale si possono usare le apposite funzioni VBScript Hex() e Oct().
Per la conversione in binario invece, si è dovuta sviluppare una semplice funzione, chiamata Bin(), che la effettua usando due cicli, un Do...Loop e un For...Next.
La funzione cerca inizialmente il primo valore dellla potenza di 2 che supera il numero inserito (con il cilco Do).
Successivamente il ciclo For sottrae le potenze di 2 al numero inserito partendo dalla cifra più significativa (e spostandosi di una cifra ad ogni passo) e inserisce un 1 o uno 0 a seconda se il valore della differenza è positivo o negativo.
Vediamo un esmepio per capire meglio.
Considero che voglio convertire il numero decimale 13 in binario. La prima potenza di 2 che supera 15 è 4 (2^4=16), quindi Potenza si ferma a 3.
Il numero di cifre da utilizzare per reppresentare il numero in binario è quindi 4.
Calcolo 2^3 (=8) e la differenza tra il numero (13) e 8. La differenza è 5 (>0), quindi pongo la prima cifra a 1.
Calcolo 2^2 (=4) e la differnza tra 5 e 4, che è positiva e vale 1, quindi pongo la seconda cifra a 1.
Calcolo 2^1 (=2) e la differenza tra 1 e 2, che è negativa, quindi pongo la terza cifra a 0.
Calcolo 2^0 (=1) e la differenza tra 1 e 1, che è nulla, quindi pongo la quarta cifra a 1.
Il risultato è quindi: 1101, che è proprio 13 tradotto in binario.
Vediamo ora il codice della pagina:
<html>
<head>
<%
Function Bin(Num)
x = 1
Do until 2^x > Num
Potenza = x
x = x + 1
Loop
For x = Potenza to 0 Step -1
If Num - (2^x) >= 0 then
outNum = outNum & "1"
Num = Num - (2^x)
Else
outNum = outNum & "0"
End If
Next
Bin = outNum
End Function
%>
</head>
<body>
<form method="POST" action="Converti.asp">
<p>Inserisci un numero decimale:
<input type="text" name="Num" size="20"
value=">%=Request("Num")%>"><br>
Converti il numero in: <select size="1" name="Base">
<option>Esadecimale</option>
<option>Ottale</option>
<option>Binario</option>
</select><br>
<input type="submit" value="Calcola" name="B1"></p>
</form>
<%
Num = Request("Num")
If Num <> "" then
Num = cLng(Num)
Select Case Request("Base")
Case "Esadecimale"
response.write Num & " = " & Hex(Num)
Case "Ottale"
response.write Num & " = " & Oct(Num)
Case "Binario"
Response.write Num & " = " & Bin(Num)
End Select
End If %>
</body>
</html>
|