@echo off
setlocal enabledelayedexpansion
::::::::::::::::::::::::::10 to 2,8,16 {s11ss 2007-9-18}::::::::::::::::::::::::::
echo Please input a number expressed in decimalism :(Assuming that it possesses 2 bytes.)
:Rec
set /p num=
if !num! gtr 32767 (call :w)
if !num! lss -32767 (call :w)
if !num! equ 0 (echo. & echo No matter what system it is expressed in,it's always 0. & goto :eof)
set /a flag=1
if !num! lss 0 (set /a num=65536+!num! & set /a flag=-1)
echo.
echo Calculating...
if !num! gtr 0 (
for %%a in (2,8,16) do (
set /a counter=0
set /a quotient=!num!
set result=
call :n %%a
call :c %%a
call :p %%a
)
goto :eof
)
:w
echo.
echo Error.The number's value is allowed in [-32767,32767] only.Please try again.
goto :Rec
:n
set /a remainder=!quotient!%%%1
set /a quotient=!quotient!/%1
if %1 equ 16 (
call :16 10 A
call :16 11 B
call :16 12 C
call :16 13 D
call :16 14 E
call :16 15 F
)
set result=!remainder!!result!
set /a counter+=1
if !quotient! equ 0 (goto :eof) else (goto :n)
:16
if !remainder! equ %1 set remainder=%2
goto :eof
:p
if %1 equ 2 (
set newrslt=!result:~0,4!
for /l %%a in (4,4,16) do (
set newrslt=!newrslt! !result:~%%a,4!
)
set t=1.Binary:
set result=!newrslt!
echo.
echo The result is :
)
if %1 equ 8 (set t=2.Octal:)
if %1 equ 16 (set t=3.Hex:)
echo.
echo !t!
echo !result!
goto :eof
:c
if %1 equ 2 (set a=16& set b=0& set c=1)
if %1 equ 8 (set a=6& set b=0& set c=1)
if %1 equ 16 (set a=4& set b=0& set c=F)
if not !counter! equ !a! (
set /a cnum=!a!-!counter!
if !flag! equ 1 (set cch=!b!) else (set cch=!c!)
for /l %%a in (1,1,!cnum!) do (set result=!cch!!result!)
)
goto :eof
setlocal enabledelayedexpansion
::::::::::::::::::::::::::10 to 2,8,16 {s11ss 2007-9-18}::::::::::::::::::::::::::
echo Please input a number expressed in decimalism :(Assuming that it possesses 2 bytes.)
:Rec
set /p num=
if !num! gtr 32767 (call :w)
if !num! lss -32767 (call :w)
if !num! equ 0 (echo. & echo No matter what system it is expressed in,it's always 0. & goto :eof)
set /a flag=1
if !num! lss 0 (set /a num=65536+!num! & set /a flag=-1)
echo.
echo Calculating...
if !num! gtr 0 (
for %%a in (2,8,16) do (
set /a counter=0
set /a quotient=!num!
set result=
call :n %%a
call :c %%a
call :p %%a
)
goto :eof
)
:w
echo.
echo Error.The number's value is allowed in [-32767,32767] only.Please try again.
goto :Rec
:n
set /a remainder=!quotient!%%%1
set /a quotient=!quotient!/%1
if %1 equ 16 (
call :16 10 A
call :16 11 B
call :16 12 C
call :16 13 D
call :16 14 E
call :16 15 F
)
set result=!remainder!!result!
set /a counter+=1
if !quotient! equ 0 (goto :eof) else (goto :n)
:16
if !remainder! equ %1 set remainder=%2
goto :eof
:p
if %1 equ 2 (
set newrslt=!result:~0,4!
for /l %%a in (4,4,16) do (
set newrslt=!newrslt! !result:~%%a,4!
)
set t=1.Binary:
set result=!newrslt!
echo.
echo The result is :
)
if %1 equ 8 (set t=2.Octal:)
if %1 equ 16 (set t=3.Hex:)
echo.
echo !t!
echo !result!
goto :eof
:c
if %1 equ 2 (set a=16& set b=0& set c=1)
if %1 equ 8 (set a=6& set b=0& set c=1)
if %1 equ 16 (set a=4& set b=0& set c=F)
if not !counter! equ !a! (
set /a cnum=!a!-!counter!
if !flag! equ 1 (set cch=!b!) else (set cch=!c!)
for /l %%a in (1,1,!cnum!) do (set result=!cch!!result!)
)
goto :eof


