找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30790|回复: 11

[文本处理] 批处理如何将10(十)进制数转换成16(十六)进制数?

[复制链接]
发表于 2016-3-22 11:31:25 | 显示全部楼层 |阅读模式
求帮忙做个 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 大侠做的,求帮忙改进!

评分

参与人数 1PB -4 收起 理由
pcl_test -4 未按版规发帖

查看全部评分

发表于 2016-3-22 12:31:46 | 显示全部楼层
回复 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技术 +1 收起 理由
codegay + 1 1

查看全部评分

 楼主| 发表于 2016-3-22 12:52:57 | 显示全部楼层
回复 2# happy886rr


    谢谢
发表于 2016-3-22 13:56:38 | 显示全部楼层
  1. cmd /c exit /b 100
  2. echo;%=ExitCode:~-2%
复制代码

评分

参与人数 1技术 +1 收起 理由
codegay + 1 1

查看全部评分

发表于 2016-3-22 16:15:25 | 显示全部楼层
回复 2# happy886rr


    可以 set list=0123456789abcdef,然后直接取字符
发表于 2016-3-22 16:25:17 | 显示全部楼层
回复 5# CrLf
大师高明。就跟做网站的小图标一样。很多图标整成一个png,然后截取显示。
发表于 2016-3-22 17:03:47 | 显示全部楼层
如果十进制数超过255了,要怎么改?
比如二进制数为上万,或者10位十进制数,怎么转为十六进制,除了用计算器。
在此只讨论批处理,不借助其它工具。
谢谢!@
发表于 2016-3-22 20:17:54 | 显示全部楼层
发表于 2016-3-22 22:01:50 | 显示全部楼层
  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))
复制代码
发表于 2016-3-22 22:05:59 | 显示全部楼层
本帖最后由 pcl_test 于 2016-3-22 22:26 编辑
  1. @powershell -c "[Convert]::ToString(15,16)"&pause
复制代码
发表于 2016-3-22 22:26:24 | 显示全部楼层
  1. @echo 15|gawk "{printf("%%x\n",$0)}"&pause
复制代码
发表于 2016-3-23 00:17:22 | 显示全部楼层
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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 23:48 , Processed in 0.023034 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表