国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

16進制數(shù)轉(zhuǎn)10進制數(shù)

2024-07-21 02:03:55
字體:
供稿:網(wǎng)友

說明:16進制數(shù)由1、2、3……9 及 a、b、c、d、e、f 組成
<form action="16to10.asp" method="post">
<input type="text" name="vars">
<input type="submit" name="Submit" value="提交">
</form>
<%
'如果輸入的值不為空,運行程序
If Request("vars")<>"" Then
'定義相關(guān)變量
Dim nums,tmp,tmpstr,i

nums=Request("vars") '取得從用戶端輸入進來的16進制數(shù)值
nums_len=Len(nums) '得出nums的長度

'開始循環(huán),次數(shù)為nums的長度值
For i=1 To nums_len
tmp=Mid(nums,i,1) '取出nums的第1個字符存放到臨時變量tmp中
If IsNumeric(tmp) Then '如果tmp中的內(nèi)容是數(shù)值型,則執(zhí)行下面代碼
tmp=tmp * 16 * (16^(nums_len-i-1)) '此為16進制數(shù)值型數(shù)據(jù)轉(zhuǎn)化為10進制數(shù)值的公式
Else
'限制輸入的16進制數(shù)的范圍在0--9及a--f之間
If ASC(UCase(tmp))<65 Or ASC(UCase(tmp))>70 Then
Response.Write "你輸入的數(shù)值中有非法字符,16進制數(shù)只包括1~9及a~f之間的字符,請重新輸入。"
Response.End
End If
tmp=(ASC(UCase(tmp))-55) * (16^(nums_len-i)) '此為16進制字符串型數(shù)據(jù)轉(zhuǎn)化為10進制數(shù)值的公式
End If
'將上面轉(zhuǎn)化后的數(shù)值與tmpstr相加累計出總和
tmpstr=tmpstr+tmp
Next
Response.Write "16進制數(shù)"& Request("vars") & "轉(zhuǎn)為10進制數(shù)是:" & tmpstr
End If
%>


重點說明:

tmp=tmp * 16 * (16^(nums_len-i-1))
tmp=(ASC(UCase(tmp))-55) * (16^(nums_len-i))


上面兩句中,第一句是將16進制數(shù)值型數(shù)據(jù)轉(zhuǎn)為10進制數(shù)據(jù)的,例如:
將16進制數(shù)3轉(zhuǎn)成10進制,上面公式就如以下:
注:因為數(shù)值的長度是1,所以nums_len和i的值都是1
tmp=3 * 16 * (16^(1-1-1))
得出結(jié)果為3

而第二句是將16進制字符型數(shù)據(jù)轉(zhuǎn)為10進制數(shù)值,例如:
將16進制數(shù)a轉(zhuǎn)成10進制,上面的公式就如以下:
因為UCase("a")或UCase("A")的結(jié)果都是等于"A",所以簡化如下:
→tmp=(ASC("A")-55) * (16^(1-1))
因為ASC("A")的值為65,所以簡化如下:
→tmp=(65-55) * (16^(1-1))
因為65-55的值等于10,所以簡化如下:
→tmp=10 * (16^(1-1))
最后得出結(jié)果:10

看到這里,相信你應該有點明白了為什么16進制字符串型的數(shù)據(jù)轉(zhuǎn)成10進制的數(shù)值要用上面的方法了吧。你可以將a,b,c,d,e,f都代入進去試一試,都是一一對應的。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东乡| 沙田区| 吉安县| 阿鲁科尔沁旗| 龙江县| 新野县| 门源| 灵山县| 吴川市| 巴马| 北辰区| 屯留县| 清流县| 山阳县| 云浮市| 陆河县| 阿瓦提县| 南乐县| 邵阳市| 紫阳县| 五峰| 榆社县| 中西区| 武陟县| 旅游| 渝北区| 尤溪县| 巴里| 漳浦县| 锦州市| 大关县| 鹰潭市| 永德县| 弥渡县| 绵竹市| 仁怀市| 浏阳市| 龙口市| 方山县| 都安| 缙云县|