|
|
楼主 |
发表于 2012-3-3 08:29:13
|
显示全部楼层
本帖最后由 plp626 于 2012-3-4 12:50 编辑
搞了个单字符转ascii索引值的专用函数,#char2asc;
中文代码页下运行,支持0x01~0x7f
英文代码页下运行,支持0x01~0xff
- @ECHO OFF
- setlocal enabledelayedexpansion
- :: 定义256表,存入#ff
- set $f= 0 1 2 3 4 5 6 7 8 9 a b c d e f&set #ff=&for %%a in (!$F!)do set #ff=!#ff!!$f: =%%a!
- :: 获取0x00~0x7f ascii表,存入@
- CALL ASCMAP.CMD @
- rem ------------------------- 内部 -----------------------------
- :: 定义#char2asc 函数,入口参数#1,出口参数##;外部依赖全局变量@={ascii码表0x00~0xff};#ff={查表法求字符串长之256位表}
- set "#char2asc=(set $1=&for /f "delims=%@:~97,26%" %%a in ("^^!#1^^!:")do if %%a==: set $1=32)&if ^!#1^!==^!@:~10^^,1^! (set ##=10)else for /f "delims==^^! " %%a in ("^^!#1^^!:")do if %%a==: (if "^^!#1^^!"=="=" (set ##=61)else if "^^!#1^^!"=="^^^^^^!" (set ##=33)else set ##=32)else for /f "eol= delims=" %%b in ("^^!#1^^!")do set #2=^!@:*%%b=^!&set $s=^!#ff^!^!#2^!^!#2^!&set/a##=255-0x^!$s:~-512,2^!+$1&if ⒈ lss 2 set/a ##-=63"
- :: 执行#char2asc函数,以字符A做测试
- set #1=A
- %#char2asc%
- echo ascii_code(!#1!)=!##!
- pause
复制代码 |
|