Board logo

标题: [文本处理] [已解决]批处理如何将RGB颜色的十进制转换为十六进制值? [打印本页]

作者: chromatin2    时间: 2015-4-6 16:33     标题: [已解决]批处理如何将RGB颜色的十进制转换为十六进制值?

本帖最后由 chromatin2 于 2015-4-6 20:32 编辑

现有抓取的RGB的十进制值。
如何转变为十六进制的值?BAT里面用的。
作者: bailong360    时间: 2015-4-6 17:33

本帖最后由 bailong360 于 2015-4-6 17:46 编辑
  1. @Echo Off
  2. Call :10x16 Var=123456789
  3. Set /A Var2=%Var%
  4. Echo 123456789=^>%Var%=^>%Var2%
  5. Pause&Exit
  6. :10x16
  7. @Echo Off&SetLocal EnableDelayedExpansion&Set Num=%~2&Set Str=0123456789abcdef
  8. For /L %%i In (1 1 8) Do (If !Num! neq 0 (
  9. Set /A Mod=Num%%16,Num/=16&For %%j In (!Mod!) Do Set Out=!Str:~%%j,1!!Out!))
  10. EndLocal&Set %~1=0x%Out%&Goto :Eof
复制代码

作者: cobat    时间: 2015-4-6 18:12

RGB是0-255吧,这么写好了.
  1. @echo off&setlocal enabledelayedexpansion
  2. set "$=0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f"
  3. set n=-1&for %%a in (%$%) do for %%b in (%$%) do set/a n+=1&set #!n!=0x%%a%%b
  4. for /l %%a in (0,1,255) do echo %%a=!#%%a!
  5. pause
复制代码

作者: pcl_test    时间: 2015-4-6 18:30

  1. '&cls&@echo off&cscript -nologo -e:vbscript %~fs0 & pause &exit /b
  2. num=16
  3. WScript.echo num & "(Dec) => "& Hex(num) & "(Hex)"
复制代码

作者: pcl_test    时间: 2015-4-6 18:36

powershell
  1. [Convert]::ToString(16,16)
复制代码

作者: pcl_test    时间: 2015-4-6 18:46

  1. @if (0)==(0) echo off
  2. cscript -nologo -e:jscript %~s0
  3. pause & exit
  4. @end
  5. var a = 16
  6. WScript.Echo(a.toString(16))
复制代码

作者: chromatin2    时间: 2015-4-6 20:33

谢谢大家的思路。
作者: CrLf    时间: 2015-4-6 21:36

分享一下这个比较少见的技巧,来自几位cn-dos的前辈:
  1. @echo off
  2. cmd /c exit /b 123456789
  3. echo %=exitcode%
  4. pause
复制代码
用 set " 还可以看到 =ExitCodeAscii、=C:、=D:、=X: 等特殊的隐藏变量
只有 31<errorlevel<127 时,才会出现 =ExitCodeAscii
作者: chromatin2    时间: 2015-4-6 21:53

回复 8# CrLf


    ...这也行,,太厉害了,看不懂。
作者: bailong360    时间: 2015-4-6 22:01

回复 8# CrLf


%=ExitCode%前几天倒是在论坛一个讨论输出ASCII字符的帖子里看到过,只是没想到可以用在这里,思路果然重要
顺便还有下面几个变量,Set也不知道怎么才能显示出来,第一个倒是很有用
%__APPDIR__%
%__CD__%
%FIRMWARE_TYPE%




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