Board logo

标题: [文本处理] 批处理如何将10(十)进制数转换成16(十六)进制数? [打印本页]

作者: wosliming    时间: 2016-3-22 11:31     标题: 批处理如何将10(十)进制数转换成16(十六)进制数?

求帮忙做个 10进制 到16 进制的转换,,只需要做整数就够用了

10进制数范围是 0-255

就一个要求,生成的16进制都是两位表示,像1-16 直接转换成16进制,就一位,,要表示成 01 02....0A 0B...0E   这样
  1. ::dec2hex
  2. set str=0123456789ABCDEF&set "ret="
  3. set/a d=%PWM%
  4. :st
  5. set/a y=%d%%%16,d/=16
  6. call set ret=%%str:~%y%,1%%%ret%
  7. if %d% NEQ 0 goto:st
  8. echo %ret%
复制代码
这个是参考论坛 hfg1977 大侠做的,求帮忙改进!
作者: happy886rr    时间: 2016-3-22 12:31

回复 1# wosliming
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. color 0f
  4. mode con cols=55 lines=25
  5. :main
  6. set /p n=请输入:
  7. for /l %%r in (1 1 2) do (
  8. set /a r=n%%16
  9. if !r! equ 10 (set r=A)
  10. if !r! equ 11 (set r=B)
  11. if !r! equ 12 (set r=C)
  12. if !r! equ 13 (set r=D)
  13. if !r! equ 14 (set r=E)
  14. if !r! equ 15 (set r=F)
  15. set nm=!r!!nm!
  16. set /a n=n/16
  17. if !n! equ 0 (
  18. if "!nm:~1!"=="" (set "nm=0!nm!")
  19. echo,!nm! &set "nm=" &pause>nul
  20. goto main
  21. )
  22. )
复制代码

作者: wosliming    时间: 2016-3-22 12:52

回复 2# happy886rr


    谢谢
作者: WHY    时间: 2016-3-22 13:56

  1. cmd /c exit /b 100
  2. echo;%=ExitCode:~-2%
复制代码

作者: CrLf    时间: 2016-3-22 16:15

回复 2# happy886rr


    可以 set list=0123456789abcdef,然后直接取字符
作者: happy886rr    时间: 2016-3-22 16:25

回复 5# CrLf
大师高明。就跟做网站的小图标一样。很多图标整成一个png,然后截取显示。
作者: bat-cmd    时间: 2016-3-22 17:03

如果十进制数超过255了,要怎么改?
比如二进制数为上万,或者10位十进制数,怎么转为十六进制,除了用计算器。
在此只讨论批处理,不借助其它工具。
谢谢!@
作者: CrLf    时间: 2016-3-22 20:17

本帖最后由 CrLf 于 2016-3-22 20:18 编辑

回复 7# bat-cmd


请参考旧帖:
http://www.bathome.net/viewthread.php?tid=15948
http://www.bathome.net/viewthread.php?tid=17141
http://www.bathome.net/viewthread.php?tid=8908
http://www.bathome.net/viewthread.php?tid=35057
作者: pcl_test    时间: 2016-3-22 22:01

  1. /*&cls
  2. @echo off
  3. set num=15
  4. cscript -nologo -e:jscript "%~f0" %num%&pause&exit
  5. */
  6. WSH.echo(Number(WScript.Arguments(0)).toString(16))
复制代码

作者: pcl_test    时间: 2016-3-22 22:05

本帖最后由 pcl_test 于 2016-3-22 22:26 编辑
  1. @powershell -c "[Convert]::ToString(15,16)"&pause
复制代码

作者: pcl_test    时间: 2016-3-22 22:26

  1. @echo 15|gawk "{printf(\"%%x\n\",$0)}"&pause
复制代码

作者: CrLf    时间: 2016-3-23 00:17

gawk 来了,那也来条 sed,不适合大数字:
  1. set /a n=130
  2. echo @|sed -r "1{:a;s/$/@/;/.{%n%}/!ba;}"|sed -r "s/^$/0/;:a;/@/!q;s/@{1,16}/ &/g;s/ @*$/ 0123456789ABCDEF&/;s/(\w*)(.*) +\w*(\w).{16}*$/\3\1\2/;s/ @{16}/@/g;ta"
复制代码
顺便搜到神帖一枚:
http://bbs.chinaunix.net/thread-1766801-1-1.html




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2