[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
没必要搞这么复杂吧?
这些代码前人写过 n遍了.....
原理
5. 十 ----> 十六
  (25.625)(十)
  整数部分:
  25/16=1......9
  1/16 =0......1
  然后我们将余数按从下往上的顺序书写就是:19,那么这个19就是十进制25的十六进制形式
  小数部分:
  0.625*16=10(即十六进制的A或a)
  然后我们将整数部分按从上往下的顺序书写就是:A,那么这个A就是十进制0.625的十六进制形式
  所以:(25.625)(十)=(19.A)(十六)

我自己写的封装模块:,=2147483647
  1. :::=======================10进制转16进制==============================
  2. ::返回值在中%sum%
  3. :dec2hex
  4. if not "%frist_BL%"=="1" (set "frist_BL=1"&set "sum="&set "yu_num="&set /a sor_num=%*)
  5. set /a yu_num= %sor_num% %% 16
  6. set /a sor_num /= 16
  7. call:set_YU %yu_num%
  8. set sum=%ret%%sum%
  9. if %sor_num% lss 16 (set "end_BL=1"&call:set_YU %sor_num%) else (set "end_BL=0")
  10. if "%end_BL%"=="1" (set sum=%ret%%sum%&set "frist_BL=0"&goto:eof)
  11. goto dec2hex
  12. :set_YU
  13. set ret=
  14. if "%1" == "10" set ret=A
  15. if "%1" == "11" set ret=B
  16. if "%1" == "12" set ret=C
  17. if "%1" == "13" set ret=D
  18. if "%1" == "14" set ret=E
  19. if "%1" == "15" set ret=F
  20. if %1 lss 10 set ret=%1
  21. goto :eof
  22. ::=======================END CODE===============================
复制代码
16转10  对于P来说不存在呀
set/a decNumber=0xhNumber
就ok了

TOP

re: mouse.com 楼主能否说明一下, 调用鼠标功能中断INT 33H 干什么呀?
.bat运行后 ntvdm.exe 占用100% 程序无反应.

[ 本帖最后由 hfg1977 于 2010-8-11 00:57 编辑 ]

TOP

看到楼上用字符串截取,我也跟着改进下
省了不少代码呀 哈哈 感谢了
  1. ::==================10进制转16进制==============================
  2. ::返回值在中%ret%
  3. :dec2hex
  4. set str=0123456789ABCDEF&set "ret="
  5. set/a d=%~1
  6. :lp
  7. set/a y=!d!%%16,d/=16
  8. call set ret=%%str:~!y!,1%%!ret!
  9. if !d! NEQ 0 goto:lp
  10. goto :eof
  11. ::=======================END CODE===============================
复制代码

TOP

返回列表