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

[文本处理] 批处理如何将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 大侠做的,求帮忙改进!
1

评分人数

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

TOP

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

TOP

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

TOP

  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))
复制代码

TOP

TOP

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

TOP

回复 5# CrLf
大师高明。就跟做网站的小图标一样。很多图标整成一个png,然后截取显示。

TOP

回复 2# happy886rr


    可以 set list=0123456789abcdef,然后直接取字符

TOP

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

评分人数

TOP

回复 2# happy886rr


    谢谢

TOP

回复 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. )
复制代码
1

评分人数

TOP

返回列表