本帖最后由 foxJL 于 2013-11-20 10:35 编辑
qzwqzw的源代码,我只作小改动,
原贴地址:http://www.bathome.net/viewthrea ... mp;page=1#pid109904- @echo off & setlocal EnableDelayedExpansion
- for /f %%i in (a.txt) do (
- set 大数=%%i
- set from=16
- set to=10
- call :XConvert !大数! !from! !to! 结果
- echo [!from!进制] !大数!
- echo [!to!进制] !结果!
- )
- pause
- goto :eof
-
- :XConvert - X进制大数N转换为指定Y进制(X/Y不大于62)
- :: 参考链接:http://www.cppblog.com/baby-fly/archive/2009/10/24/99362.html
- :: http://www.cnblogs.com/phinecos/archive/2009/09/11/1564975.html
- setlocal EnableDelayedExpansion
- set 源数=%~1
- set 源进制=%~2
- set 目标进制=%~3
- set 返回值=%~4
- set 进制数列=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
- :XCloop1
- set 位号=0
- set 模=0
- set 商=
- :XCloop2
- set 当前位=!源数:~%位号%,1!
- set 当前位值=-1
- :XCLoop3
- set /a 当前位值+=1
- if not "%当前位%"=="!进制数列:~%当前位值%,1!" goto :XCLoop3
- set /a 当前除数=模 * 源进制 + 当前位值
- set /a 当前商=当前除数 / 目标进制
- set 商=%商%!进制数列:~%当前商%,1!
- if "%商%"=="0" set 商=
- set /a 模=当前除数 %% 目标进制
- set /a 位号+=1
- if not "!源数:~%位号%,1!"=="" goto :XCloop2
- if "%商%"=="" set 商=0
- set 目标数=!进制数列:~%模%,1!%目标数%
- set 源数=%商%
- if not "%源数%"=="0" goto :XCloop1
- endlocal & set %返回值%=%目标数%
- goto :eof
复制代码
|