IT学习者 | 文章大全 | 技术文档 | 桌面壁纸 | 实用查询 | 网络电台 | 成语 | 歇后语 | 网址 | 下载 | 周公解梦 | 生日密码 | 电视剧365 | Flash
 您现在的位置: IT学习者 >> 文章大全 >> 网络编程 >> 数据库开发

16进制数转10进制数

【 作者:arbiter    来源:不详  更新时间:2004-5-4 | 字体:

说明:16进制数由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
'定义相关变量
Dim nums,tmp,tmpstr,i

nums=Request("vars") '取得从用户端输入进来的16进制数值
nums_len=Len(nums) '得出nums的长度

'开始循环,次数为nums的长度值
For i=1 To nums_len
tmp=Mid(nums,i,1) '取出nums的第1个字符存放到临时变量tmp中
If IsNumeric(tmp) Then '如果tmp中的内容是数值型,则执行下面代码
tmp=tmp * 16 * (16^(nums_len-i-1)) '此为16进制数值型数据转化为10进制数值的公式
Else
'限制输入的16进制数的范围在0--9及a--f之间
If ASC(UCase(tmp))<65 Or ASC(UCase(tmp))>70 Then
Response.Write "你输入的数值中有非法字符,16进制数只包括1~9及a~f之间的字符,请重新输入。"
Response.End
End If
tmp=(ASC(UCase(tmp))-55) * (16^(nums_len-i)) '此为16进制字符串型数据转化为10进制数值的公式
End If
'将上面转化后的数值与tmpstr相加累计出总和
tmpstr=tmpstr+tmp
Next
Response.Write "16进制数"& Request("vars") & "转为10进制数是:" & tmpstr
End If
%>


重点说明:

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


上面两句中,第一句是将16进制数值型数据转为10进制数据的,例如:
将16进制数3转成10进制,上面公式就如以下:
注:因为数值的长度是1,所以nums_len和i的值都是1
tmp=3 * 16 * (16^(1-1-1))
得出结果为3

而第二句是将16进制字符型数据转为10进制数值,例如:
将16进制数a转成10进制,上面的公式就如以下:
因为UCase("a")或UCase("A")的结果都是等于"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))
最后得出结果:10

看到这里,相信你应该有点明白了为什么16进制字符串型的数据转成10进制的数值要用上面的方法了吧。你可以将a,b,c,d,e,f都代入进去试一试,都是一一对应的。

相 关 文 章
相 关 软 件
没有相关下载
逃生 放生 黄玫瑰 想太多 那滋味 擦肩而过 放手去爱 北京欢迎你 依然在一起 吻得太逼真 感动天感动地 坐上火车去拉萨 怎么会狠心伤害我
心碎 冲动 小太阳 别碰我 蒲公英 千山万水 改变自己 一定要爱你 等爱的玫瑰 陷入爱里面 北极星的眼泪 最后一次的温柔 亲爱的那不是爱情
光荣 火花 坏女人 日不落 樱花草 为你写诗 独家记忆 夏天的味道 寂寞才说爱 忘不掉的伤 爱上你是个错 第三者的第三者 地球人都知道我爱你
假如 相思 是非题 有缘人 舍不得 我的答铃 死而无憾 外滩十八号 越爱越难过 123木头人 和寂寞说分手 爱上你是我的错 爱情里没有谁对谁错
加入收藏留言建议自助友情链接普通友情链接站长的Blog
版权所有   COPYRIGHT 2002-2008 ★IT学习者★ ALL RIGHTS RESERVED.