- ·上一篇文章:批处理禁用&启用USB设备原来如此简单(可按标准分类)
- ·下一篇文章:批处理代码实现跑圈特效
- ·百度中搜索更多的关于“用批处理程序任意进制数互转”相关内容
- ·谷歌中搜索更多的关于“用批处理程序任意进制数互转”相关内容
- ******申明******
- 本站文章内容有部分为收录网络中其他网友内容,DOS资源站不保证所有的代码都适合你使用。
- 由于编辑匆忙,有可能造成某些脚本文件出现丢失代码或代码无法运行的情况,请网友根据情况自行修改。
- 如果能将出错部分反馈给我,那就更好了。
用批处理程序任意进制数互转
转换方法:
代码中任意进制转成10进制的方法与16进制转10进制的方法是一样的。
欢迎测试,并指出错误。。
--------------------------------
代码思路:先将任意进制的数转换成10进制,再转换成需要的进制
:
@echo off&title DOS资源站 www.cmdos.net&setlocal EnableDelayedExpansion&color 1f
title 任意进制数互转
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

