回 帖 发 新 帖 刷新版面

主题:n进制转m进制(2<=n<=16,2<=m<=16)

帮我

回复列表 (共3个回复)

沙发

可以转成10进制再转成其他进制

板凳

以前编过的……找找……

3 楼

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

我来回复

您尚未登录,请登录后再回复。点此登录或注册