好象这两天论坛里有几个都是有关不同进位数之间的互换问题,今天有空就给大家写两个函数出来,希望能抛砖引玉。 这两个函数可以使 [小于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 (二进位) %>
|