繁体中文
设为首页
加入收藏
当前位置:ASP技术首页 >> ASP基础 >> 十进位和其它进位数互换的函数

十进位和其它进位数互换的函数

2006-07-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:好象这两天论坛里有几个都是有关不同进位数之间的互换问题,今天有空就给大家写两个函数出来,希望能抛砖引玉。 这两个函数可以使 [小于36进位的数] 和 [十进位数]相互转换,从而使得[小于36进位数]的不同进位数...
关键字:位数 函数 其它

好象这两天论坛里有几个都是有关不同进位数之间的互换问题,今天有空就给大家写两个函数出来,希望能抛砖引玉。

这两个函数可以使 [小于36进位的数] 和 [十进位数]相互转换,从而使得[小于36进位数]的不同进位数间实现转换,现将它们写在下面:

<%

'说明:合并使用和以转化不同位数之间的转化

'****************** 转换成十进位函数 ******************

'--------------说明部分--------------------------------

'[功能] 小于36进位的数 ---转换成---> 十进位 的函数

'[说明]

'Binary 是原数,十进位以上的数一定要是字符串,其它的都可以。

'H 是原数的进位值。

'引用 Decimal(Binary,H)

'--------------函数部分--------------

function Decimal(Binary,H)

'分解成整数和小数两部分来分别处理

L = Split(Binary,".")

For i = 0 to Ubound(L)

For ii = 1 to Len(L(i))

'处理整数部分

Power = ii-1

cLen = Len(L(i))-ii+1

'处理小数部分

If i = 1 then

Power = -ii

cLen = ii

End if

'取得位数值

Bin = Mid(L(i),cLen,1)

'处理10进以上进位

if isNumeric(Bin) = False then

Bin = Asc(UCase(Bin))-55

end if

'逐位幂运算并累加结果

Dec = Dec + Bin*H^(Power)

Next

Next

'输出最终值

Decimal = Dec

end function

'--------------例子1--------------------

'例子1 (二进位转换成十进位):

Num = 1011.01 '原数

H = 2 '原来的进位数

Response.Write Decimal(Num,H) '引用函数

'输出结果是 11.25 (十进位)

'--------------例子2--------------------

'例子2 (十六进位转换成十进位):

Num = "a0.8" '原数

H = 16 '原来的进位数

Response.Write Decimal(Num,H) '引用函数

'显示结果是 160.5 (十进位)

'****************** 转换成其它进位 ******************

'--------------说明--------------------------------

'[功能:]十进位 ---转换成---> 小于36进位的数 的函数

'[说明:]

'Decimal是原数,十进位以上的数是以字符串形式输出。

'H 是原数的进位值。

'H2 是转化后的数精确到小数点后几位。

'引用 Binary(Decimal,H,H2)

'--------------函数部分----------------------------

function Binary(Decimal,H,H2)

L = Split(Decimal,".")

Z = cInt(L(0))

For i = 0 to Ubound(L)

'===========处理整数部分==========

IF i = 0 THEN

Z1 = Z

if Z1 < H then

Dec1 = Z

if Z1 > 9 then

Dec1 = Chr(Z1+55)

end if

else

ii = 1

Do While Z1 > 0

X1 = Z1 Mod H

if X1 > 9 then

X1 = Chr(X1+55)

end if

Dec1 = cStr(X1) & Dec1

Z1 = Fix(Z1/H)

ii = ii+1

Loop

end if

'==========处理小数部分==========

ELSE

Z = Decimal-Z

For ii = 1 to H2

X = Fix(Z*H)

Z = Z*H - X

if X > 9 then

X = Chr(X+55)

end if

Dec2 = Dec2 & cStr(X)

Next

Dec2 = "."& cStr(Dec2)

END IF

Next

Binary = Dec1 & Dec2

end function

'--------------例子1--------------

'原数是十进位的160.6640625要转化成十六进位

Numb = 160.6640625 '原数

H = 16 '要转化成的进位数

H2 = 2 '转化后精确到小数点后几位

Response.Write Binary(Numb,H,H2) '引用函数

'显示结果是 a0.aa (十六进位)

'--------------例子2--------------

'原数是十进位的11.25要转化成二进位

Numb = 11.25 '原数

H = 2 '要转化成的进位数

H2 = 2 '转化后精确到小数点后几位

Response.Write Binary(Numb,H,H2) '引用函数

'显示结果是 1011.01 (二进位)

%>

责任编辑:admin
相关文章