[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
对输入数长度判断在16位以内 如需处理更大数 可自加判断
当然 有人可处理转其他进制
  1. @echo off&setlocal enabledelayedexpansion
  2. set/p Str=请输入十进制数:
  3. set "Code=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@"
  4. for %%i in (2 8 16) do set S=!str!&call:lp %%i _%%i&ECHO !str! 对应 [%%i进制]: !_%%i!
  5. pause&exit
  6. :lp
  7. set U=!S!FEDCBA9876543210
  8. SET/A U=0x!U:~16,1!,R=0
  9. for /l %%i in (0 1 %U%) do (
  10.    set/a "N=!S:~%%i,1!+(R*10),r=N%%%1,N/=%1"
  11.    set B=!B!!N!
  12.    if !B! equ 0 set "B="
  13. )
  14.    set %2=!Code:~%R%,1!!%2!
  15.    if defined B set S=!B!&set B=&goto lp
复制代码

TOP

输入数在可运算范围内的位移
如超出运算范围 8楼代码可处理大数
  1. @echo off&setlocal enabledelayedexpansion
  2. set/p T=输入10进制数:
  3. set "Code=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@"
  4. for %%i in (1 3 4) do (
  5.     set /a "i=1<<%%i,j=i-1"
  6.     set S=%T%
  7.     for /l %%j in (0 1 31) do (
  8.         if !S! neq 0 (
  9.            set/a "B=S&j,S>>=%%i"
  10.            for %%k in (!B!) do set _%%i=!Code:~%%k,1!!_%%i!
  11.         )
  12.     )
  13.     echo %T% 对应 !i! 进制 "!_%%i!"
  14. )
  15. pause
复制代码
1

评分人数

    • plp626: 位运算用于2 4 8 16 32进制;PB + 6

TOP

返回列表