|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
*-- 进制转变: 十六进制到十进制 *-- 程序思路:将一个十六进制数,依次从左到右将其各自的数据乘以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 返回类别: 教程 上一教程: ASP压缩数据库 下一教程: ASP技术在论坛中的运用(一) 您可以阅读与"十六进制与十进制的互相转变"相关的教程: · ASP中汉字与UTF-8的互相转变 · 纯ASP分离FORM数据中的二进制文件和文本数据 · 处理二进制数据 · 用ADODB.STREAM将以二进制方法保存在数据库中的文件保存到硬盘 · ASP 3.0高级编程(二十六) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |