主题:n进制转m进制(2<=n<=16,2<=m<=16)
大大大
[专家分:0] 发布于 2005-01-30 13:34:00
帮我
回复列表 (共3个回复)
沙发
faintzw [专家分:2660] 发布于 2005-01-30 17:59:00
可以转成10进制再转成其他进制
板凳
GrapeOT [专家分:120] 发布于 2005-01-30 21:14:00
以前编过的……找找……
3 楼
GrapeOT [专家分:120] 发布于 2005-01-30 21:21:00
DECLARE FUNCTION vto10! (a$, b!)
DECLARE FUNCTION v10to$ (a!, b!)
CLS
INPUT "num,old,new="; num$, old, new
PRINT v10to$(vto10(num$, old), new)
END
FUNCTION v10to$ (a, b)
'a is num
'b is jinzhi
result = a
DO
modres = result MOD b
IF modres >= 10 THEN
modres$ = CHR$(modres + 55)
ELSE
modres$ = STR$(modres)
END IF
result = result \ b
result$ = result$ + RIGHT$(modres$, 1)
LOOP UNTIL result < b
IF result >= 10 THEN
modres$ = CHR$(result + 55)
ELSE
modres$ = STR$(result)
END IF
result$ = result$ + RIGHT$(modres$, 1)
resultlen = LEN(result$)
DIM result$(resultlen)
FOR i = 1 TO resultlen
result$(i) = LEFT$(result$, 1)
result$ = RIGHT$(result$, LEN(result$) - 1)
NEXT i
result$ = ""
FOR i = resultlen TO 1 STEP -1
result$ = result$ + result$(i)
NEXT i
v10to$ = result$
END FUNCTION
FUNCTION vto10 (a$, b)
'a is num
'b is jinzhi
temp$ = a$
temp = LEN(temp$)
DIM temp$(temp)
FOR i = 1 TO temp
temp$(i) = LEFT$(temp$, 1)
IF UCASE$(temp$(i)) >= "A" THEN
temp$(i) = STR$(ASC(UCASE$(temp$(i))) - 55)
temp$ = RIGHT$(temp$, LEN(temp$) - 1)
GOTO nextfor
END IF
temp$ = RIGHT$(temp$, LEN(temp$) - 1)
nextfor: NEXT i
temp$ = ""
tempv = 0
x = -1
FOR i = temp TO 1 STEP -1
x = x + 1
tempv = tempv + VAL(temp$(i)) * b ^ x
NEXT i
vto10 = tempv
END FUNCTION
我来回复