[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[特效代码] 求助批处理如何实现输入数值显示相应的字母?

以下代码可以将A  赋值为 1
                        B              2
                        C              4
                        D              8  (2的3次方)
                               ...
然后A B C... 可以执行+ - * / 运算
  1. @echo off &setlocal
  2. set /p abc=输入
  3. set a=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  4. for %%i in (%a%) do set /a %%i=1"<<num,num+=1
  5. set /a abc=%abc%
  6. echo %abc%
  7. pause
复制代码
请问怎么实现其逆过程
如输入8 显示D
    输入10 显示B+D

[ 本帖最后由 raozhao2008 于 2009-3-21 10:08 编辑 ]

先来一个很粗糙的
  1. @echo off
  2. set letters=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  3. for %%i in (%letters%) do set /a "%%i=1<<bit",bit+=1&call set _%%%%i%%=%%i
  4. set /p num=请输入:
  5. call :dec2bin %num% bin
  6. echo binary: %bin: =%
  7. for %%a in (%bin%) do call set "Reverse=%%a %%Reverse%%"
  8. for %%a in (%Reverse%) do set /a "value=(1<<index)*%%a",index+=1&call call set str=%%%%_%%value%%%%%% %%str%%
  9. for %%a in (%str%) do call set "result=%%a+%%result%%"
  10. echo %num%=%result:~,-1%
  11. for %%a in (%result:+= %) do call set "result2=%%result2%%+%%%%a%%"
  12. echo %num%=%result2:~1%
  13. echo.&echo.&pause&exit/b
  14. :dec2bin
  15. setlocal
  16. set str=0123456789abcdef%无必要%
  17. set /a b=%~1
  18. :lp
  19. set /a a=b%%2,b/=2
  20. call set "bin=%%str:~%a%,1%% %bin%"
  21. if %b% gtr 0 goto lp
  22. endlocal&set %~2=%bin%
  23. goto :EOF
复制代码
1

评分人数

命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 2楼 的帖子

一看头就大了
初试通过
谢了

TOP

zqz兄的代码复杂了,用位与&就可以计算出是哪些数的和~
1

评分人数

心绪平和,眼藏静谧。

TOP

回复 4楼 的帖子

的确,位运算简单多了。感谢pusofalse兄提醒。
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set /p "num=Input:\>"
  4. for /l %%a in (0 1 31) do (
  5.     set /a "n=1<<%%a", "m=n&num"
  6.     if !m! neq 0 set /p=!n! <nul
  7. )
  8. echo.&pause
复制代码

[ 本帖最后由 zqz0012005 于 2009-3-22 01:11 编辑 ]
1

评分人数

命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 5楼 的帖子

运行结果是
输入7
显示1 2 4
不是A B C
请问该怎么改

TOP

返回列表