标题: [特效代码] 求助批处理如何实现输入数值显示相应的字母? [打印本页]
作者: raozhao2008 时间: 2009-3-20 19:09 标题: 求助批处理如何实现输入数值显示相应的字母?
以下代码可以将A 赋值为 1
B 2
C 4
D 8 (2的3次方)
...
然后A B C... 可以执行+ - * / 运算-
- @echo off &setlocal
- set /p abc=输入
- 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
- for %%i in (%a%) do set /a %%i=1"<<num,num+=1
- set /a abc=%abc%
- echo %abc%
- pause
复制代码
请问怎么实现其逆过程
如输入8 显示D
输入10 显示B+D
[ 本帖最后由 raozhao2008 于 2009-3-21 10:08 编辑 ]
作者: zqz0012005 时间: 2009-3-21 11:03
先来一个很粗糙的- @echo off
- 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
- for %%i in (%letters%) do set /a "%%i=1<<bit",bit+=1&call set _%%%%i%%=%%i
- set /p num=请输入:
- call :dec2bin %num% bin
- echo binary: %bin: =%
- for %%a in (%bin%) do call set "Reverse=%%a %%Reverse%%"
- for %%a in (%Reverse%) do set /a "value=(1<<index)*%%a",index+=1&call call set str=%%%%_%%value%%%%%% %%str%%
- for %%a in (%str%) do call set "result=%%a+%%result%%"
- echo %num%=%result:~,-1%
- for %%a in (%result:+= %) do call set "result2=%%result2%%+%%%%a%%"
- echo %num%=%result2:~1%
- echo.&echo.&pause&exit/b
-
- :dec2bin
- setlocal
- set str=0123456789abcdef%无必要%
- set /a b=%~1
- :lp
- set /a a=b%%2,b/=2
- call set "bin=%%str:~%a%,1%% %bin%"
- if %b% gtr 0 goto lp
- endlocal&set %~2=%bin%
- goto :EOF
复制代码
作者: raozhao2008 时间: 2009-3-21 11:28 标题: 回复 2楼 的帖子
一看头就大了
初试通过
谢了
作者: pusofalse 时间: 2009-3-21 17:21
zqz兄的代码复杂了,用位与&就可以计算出是哪些数的和~
作者: zqz0012005 时间: 2009-3-22 01:09 标题: 回复 4楼 的帖子
的确,位运算简单多了。感谢pusofalse兄提醒。- @echo off
- setlocal enableDelayedExpansion
- set /p "num=Input:\>"
- for /l %%a in (0 1 31) do (
- set /a "n=1<<%%a", "m=n&num"
- if !m! neq 0 set /p=!n! <nul
- )
- echo.&pause
复制代码
[ 本帖最后由 zqz0012005 于 2009-3-22 01:11 编辑 ]
作者: raozhao2008 时间: 2009-4-9 15:48 标题: 回复 5楼 的帖子
运行结果是
输入7
显示1 2 4
不是A B C
请问该怎么改
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |