Board logo

标题: [数值计算] 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

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "hex=AB"
  4. for %%i in (
  5.     "#0=0000"
  6.     "#1=0001"
  7.     "#2=0010"
  8.     "#3=0011"
  9.     "#4=0100"
  10.     "#5=0101"
  11.     "#6=0110"
  12.     "#7=0111"
  13.     "#8=1000"
  14.     "#9=1001"
  15.     "#A=1010"
  16.     "#B=1011"
  17.     "#C=1100"
  18.     "#D=1101"
  19.     "#E=1110"
  20.     "#F=1111"
  21. ) do set %%i
  22. for %%i in (0 1) do (
  23.     for %%j in (!hex:~%%i^,1!) do set "bin=!bin!!#%%j!"
  24. )
  25. echo %bin%
  26. echo bit2=%bin:~1,1%
  27. echo bit5=%bin:~4,1%
  28. pause
复制代码

作者: aa77dd@163.com    时间: 2015-8-10 16:31

现在的计算机都工作在 2 进制的基础上, 要获得 2 进制形式, 用位运算:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (0x20 -1 -0x20) do (
  4.     for /l %%b in (31 -1 0) do set /a "b = %%i >> %%b & 1" & <nul set /p "=!b!"
  5.     echo;   %%i
  6. )
  7. pause
复制代码

作者: bailong360    时间: 2015-8-10 18:14

本帖最后由 bailong360 于 2015-8-11 15:11 编辑
  1. set /a "bit2=0xCC&4>>1,bit5=0xCC&16>>4"
复制代码
既然最终目的是取bit2,bit5的值,直接位运算就好了嘛...
-----------
楼下很狡猾,竟然不告诉我写错了....原来bit2是指从右往左第3位...
作者: terse    时间: 2015-8-11 00:13

同意 既然取bit2,bit5的值 直接位运算
  1. set /a "bt2=0xAB>>6&1,bt5=0xAB>>3&1"
复制代码





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