0401 的代码中精简的?
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
Originally posted by everest79 at 2007-11-27 08:54 PM:
我也写过个
SETLOCAL ENABLEDELAYEDEXPANSION
IF %1 GTR 2099999999 (GOTO :EOF)
SET VAR=0123456789ABCDEF
FOR /L %%i IN (0,1,15) DO (
SET H%%i=!VAR:~%%i,1!)
SET HH=1&SET KK=0&SET TT=% ...
Originally posted by s11ss at 2007-11-27 20:51:
zh159兄,你的转换多位的代码与我的代码相比也不见得不啰嗦啊~~~~~~~~
不好意思,我收回这句话。
其实各有优缺点。
你的简单但降低了代码可读性而且加大了“程序处理量”(0-9都替换了),我的啰嗦但提高了代码可读性。
call set r=%%r:10=A%%
call set r=%%r:11=B%%
call set r=%%r:12=C%%
call set r=%%r:13=D%%
call set r=%%r:14=E%%
call set r=%%r:15=F%%
call set r%1=%r%%%r%1%%
:10to16
set/a q=%1
:1c
set/a r=%q%%%16
set/a q=%q%/16
call set r=%%r:10=A%%
call set r=%%r:11=B%%
call set r=%%r:12=C%%
call set r=%%r:13=D%%
call set r=%%r:14=E%%
call set r=%%r:15=F%%
call set r%1=%r%%%r%1%%
if not %q% equ 0 goto :1c
call set r=%%r%1%%
:10to16
set H=0123456789ABCDEF
set/a q=%1
:1c
set/a r=%q%%%16
set/a q=%q%/16
call set r=%%H:~%r%,1%%
call set r%1=%r%%%r%1%%
if not %q% equ 0 goto :1c
call set r=%%r%1%%
| 评分人 | 分数 | 时间 |
|---|---|---|
| s11ss | +2 | 2007-11-28 13:04 |
Originally posted by fastslz at 2007-11-28 00:32:
iexplore about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>不能播放Midi可能缺少VB6控件吧
下载详细信息: Microsoft Visual Bas ...
Originally posted by zh159 at 2007-11-27 20:07:
现在10to16不用这么罗嗦了,如果只转换一位(0~f),用下面的就OK
set "Hex=0123456789ABCDEF"
set /a R=
call set R=%%Hex:~%R%,1%%
转换多位的:
@echo off
set "Hex=0123456789ABCDEF"
set /p S=
:10to16
set /a R=S%%16
call set R=%%Hex:~%R%,1%%
set /a S/=16
set C=%R%%C%
if not %S% == 0 goto 10to16
echo %C%
set S=
set R=
set C=
pause
[ Last edited by zh159 on 2007-11-27 at 08:09 PM ]
@echo off
call :10to16 255 H
echo 十进制 255 的十六进制为:%H%
call :10to16 0 H
echo 十进制 0 的十六进制为:%H%
call :10to16 256 H
echo 十进制 256 的十六进制为:%H%
pause
exit /b
:10to16 d h
SETLOCAL ENABLEDELAYEDEXPANSION
set "dec=%~1"
set "hex=0123456789ABCDEF"
set "result="
if "%dec%"=="0" set "result=0" & goto :done
:loop
set /a "quot=dec/16"
set /a "rem=dec%%16"
call set "char=%%hex:~!rem!,1%%"
set "result=!char!!result!"
set "dec=!quot!"
if !quot! gtr 0 goto loop
:done
endlocal & set "%~2=%result%" & exit /B