标题: [数值计算] cmd 批处理写将16进制数转成2进制数,取bit2,bit 5 的值 [打印本页]
作者: harvey_xu 时间: 2015-8-9 15:51 标题: cmd 批处理写将16进制数转成2进制数,取bit2,bit 5 的值
我要在windows cmd 运行的bat, 将16进制数转成2进制数,取bit2,bit 5 的值 , 要怎么写啊,想的头都大了.
作者: CrLf 时间: 2015-8-9 21:20
十六进制转二进制的办法太多了吧...
作者: harvey_xu 时间: 2015-8-10 08:30
回复 2# CrLf
大哥,请赐教,
十六制有两位,转换成二进制,取bit2/bit4 /bit5 的值.
谢谢
作者: WHY 时间: 2015-8-10 15:59
- @echo off
- setlocal enabledelayedexpansion
- set "hex=AB"
- for %%i in (
- "#0=0000"
- "#1=0001"
- "#2=0010"
- "#3=0011"
- "#4=0100"
- "#5=0101"
- "#6=0110"
- "#7=0111"
- "#8=1000"
- "#9=1001"
- "#A=1010"
- "#B=1011"
- "#C=1100"
- "#D=1101"
- "#E=1110"
- "#F=1111"
- ) do set %%i
-
- for %%i in (0 1) do (
- for %%j in (!hex:~%%i^,1!) do set "bin=!bin!!#%%j!"
- )
-
- echo %bin%
- echo bit2=%bin:~1,1%
- echo bit5=%bin:~4,1%
- pause
复制代码
作者: aa77dd@163.com 时间: 2015-8-10 16:31
现在的计算机都工作在 2 进制的基础上, 要获得 2 进制形式, 用位运算:- @echo off
- setlocal enabledelayedexpansion
-
- for /l %%i in (0x20 -1 -0x20) do (
- for /l %%b in (31 -1 0) do set /a "b = %%i >> %%b & 1" & <nul set /p "=!b!"
- echo; %%i
- )
-
- pause
复制代码
作者: bailong360 时间: 2015-8-10 18:14
本帖最后由 bailong360 于 2015-8-11 15:11 编辑
- set /a "bit2=0xCC&4>>1,bit5=0xCC&16>>4"
复制代码
既然最终目的是取bit2,bit5的值,直接位运算就好了嘛...
-----------
楼下很狡猾,竟然不告诉我写错了....原来bit2是指从右往左第3位...
作者: terse 时间: 2015-8-11 00:13
同意 既然取bit2,bit5的值 直接位运算- set /a "bt2=0xAB>>6&1,bt5=0xAB>>3&1"
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |