快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

*-- 进制转变: 十六进制到十进制
*-- 程序思路:将一个十六进制数,依次从左到右将其各自的数据乘以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高级编程(二十六)
    微笑服务 优质保证 索取样品