各位大虾小弟请教一道简单的vfp的编程题
编成实现将二进制整数转化为n进制的整数
各位大虾 小弟先谢过了
问题点数:0、回复次数:2Top
1 楼rijin(苦儿)回复于 2003-11-03 13:34:18 得分 0
总体思路:
1. 先转换成十进制;
2. 再将十进制数据转换成n进制。
具体方法:
假设二进制数存储在 mybin 中, 十进制数存储在 mydec 中,n进制数存储在 myresult 中
Function bin2njz
&& 二进制数转换为n进制数,最多36进制
&& 参数:mybin 为字符型二进制数;njz 表示n进制,为整型数
parameter mybin, njz
if val(mybin)=0
Return "0"
endif
if njz>36
messagebox("不能大于36进制。")
Return ""
endif
local mydec, mytmp, myresult, i
mydec=0
mytmp=0
myresult=""
i=0
* 先转换成十进制数
for i=0 to len(mybin) - 1
mydec= mydec + val(substr(mybin,len(mybin)-i,1)) * 2^i
endfor
if njz=10
Return alltrim(str(mydec))
endif
* 将十进制数 mydec 转换成 n 进制
i=0
do while mydec>0
mytmp = (mydec/(njz ^ i)) % njz
myresult=njz_number(mytmp, njz) + myresult
mydec= mydec - mytmp * (njz^i )
i=i + 1
enddo
Return myresult
Endfunc
Function njz_number && 将某个小于n的十进制数转换成n进制中表示方式
parameter dec_number, njz
if njz<=10 or dec_number<10
Return alltrim(str(dec_number))
endif
* 若大于9,用A-Z表示
Return chr(64 + dec_number - 9)
Endfunc
仅供参考。Top
2 楼laiguorong(Win Lai)回复于 2003-11-20 00:11:56 得分 0
markTop




