[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] cmd 批处理写将16进制数转成2进制数,取bit2,bit 5 的值

我要在windows cmd 运行的bat, 将16进制数转成2进制数,取bit2,bit 5 的值 , 要怎么写啊,想的头都大了.

十六进制转二进制的办法太多了吧...

TOP

回复 2# CrLf


    大哥,请赐教,
  十六制有两位,转换成二进制,取bit2/bit4 /bit5 的值.
谢谢

TOP

  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
复制代码

TOP

现在的计算机都工作在 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
复制代码

TOP

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

TOP

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

TOP

返回列表