标题: [数值计算] 任意进制数互转批处理版 [打印本页]
作者: 随风 时间: 2008-3-7 01:43 标题: 任意进制数互转批处理版
这两天论坛对进制的转换讨论的比较热闹
闲来没事,搞了个任意进制数互转
不知道算法对不对,
转换方法:
16进制转换10进制的方法我会。
代码中任意进制转成10进制的方法与16进制转10进制的方法是一样的。
欢迎测试,并指出错误。。
--------------------------------
代码思路:先将任意进制的数转换成10进制,再转换成需要的进制
:- @echo off&setlocal EnableDelayedExpansion&color 1f
- title 任意进制数互转 code by 随风 @bbs.bathome.net 2008/03/07
- set "str=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- for /l %%a in (0 1 35) do (
- set _%%a=!str:~%%a,1!
- set _!str:~%%a,1!=%%a
- )
- :start
- setlocal&cls
- echo\&echo 本程序可将任意进制的数(1-36)转换成指定进制的数。
- echo\&echo 输入方法: 需转换的数 空格 输入的数的进制 空格 被转换成的进制
- echo\&echo 如需将 16 进制数 2af5 转换为 8 进制
- echo\&echo 则输入 2af5 16 8 用空格分开即可
- set /p zjz= &cls
- call :fff !zjz!
- set num=!var!
- if !qz! neq 10 call :loop
- if !hou! equ 10 goto xs
- :lis 10 进制转 n 进制
- set /a yu=num%%hou,num/=hou
- call set jie=!!_%yu%!!!jie!
- if !num! gtr 0 goto lis
- set num=!jie!
- :xs
- echo\&echo !qz! 进制数 !var!
- echo\&echo !hou! 进制数 !num!
- pause>nul
- endlocal
- goto start
- :loop n 进制转 10 进制
- for /l %%a in (0 1 100) do (
- if not "!var:~%%a,1!"=="" (
- call set sun=%%_!var:~%%a,1!%% !sun!
- ))
- set /a nnn=1,num=0
- for %%a in (!sun!) do (
- set /a num=%%a*nnn+num
- set /a nnn*=qz
- )
- goto :eof
- :fff
- set var=%1&set qz=%2&set hou=%3
- goto :eof
复制代码
作者: zxm.gongqing 时间: 2008-3-8 17:25 标题: 顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: hjh700913 时间: 2009-5-9 18:25
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |