·您的位置: 首页 » 资源教程 » 编程开发 » ASP » 十六进制与十进制的互相转换

十六进制与十进制的互相转换

类别: ASP教程  评论数:0 总得分:0
*-- 进制转换: 十六进制到十进制
*-- 程序思路:将一个十六进制数,依次从左到右将其各自的数据乘以16的 n 次幂,
* 这里 n 的取值为:从右往左起顺序排列数再减去 1, 如 123 那么1排第2位,
* 2排第1位,3排第0位, 如果有小数位,那么依次从小数点往后是-1、-2、-3 ...
* 当处理 A-F 的十六进制数时,需要将他们先转换为 10-16 的数据,这里使用
* 函数 asc(), asc("A") - 55 = 65 - 55 = 10, 最后是将他们的和全部加起来。
* 注意: 这里只是针对整数部分处理。


Func Hex2Dec
para tcHex
tcHex = upper(allt(tcHex))

lnLen = len(tcHex)
lnDec = 0

for n = 1 to lnLen
lcCurChr = substr(tcHex,n,1)
if lcCurChr >= "A"
lnCurNum = asc(lcCurChr) - 55
else
lnCurNum = val(lcCurChr)
endif

lnDec = lnCurNum * 16 ^ ( lnLen - n ) + lnDec
endfor

retu int(lnDec)


*-- 进制转换:十进制到十六进制
*-- 程序思路:
* 将一个十进制数 tnDec 除以16,得到的余数作为当前值:lnCurNum,
* 判断该数是否大于9,一般在 10 ~ 16 他们在十六进制中的取值为 A~F
* 这里的计算可以通过ASCII码进行,使用函数 chr(55+10) = "A",依次类推
* 将所得到的余数 lcCurChr 依次排列起来即得到十六进制结果 lcHex 。
* 而得到的商数继续保留为 tnDec,循环继续处理,当商数为 0 时即退出循环。
*-- 注意: 本程序只是针对整数位处理,小数位处理是依次要乘以16,将得到的
* 整数位依次保留作为十六进制的结果,留下的小数位继续乘以16,循环处理
* 直到小数位为 0 时退出循环处理。

Func Dec2Hex
para tnDec
local lcHex,lnCurNum,lcCurChr
lcHex = ""

do while .T.
lnCurNum = mod(tnDec,16)
if lnCurNum > 9
lcCurChr = chr(lnCurNum + 55)
else
lcCurChr = str(lnCurNum,1)
endif
lcHex = lcCurChr + lcHex
tnDec = int(tnDec/16)
if tnDec <= 0
exit
endif
enddo

retu lcHex
-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1