找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26936|回复: 5

[数值计算] 批处理如何实现进制转换后区后14位?

[复制链接]
发表于 2011-6-23 19:26:23 | 显示全部楼层 |阅读模式
将一个由3部分组成的10进制数(例如5-251-38)转换成16进制的数(例如05FB26),然后将这个16进制的数字转换成2进制的数(例如1011111101100100110),然后取这个2进制数字的后14位,将这个14位的2进制数转换成10进制的结果,请问批处理语言怎样实现上述功能啊,(PS:输入的那个由3部分组成的10进制数每一部分都不会大于256),请帮忙,谢谢
联系方式:tanghow@sina.com
发表于 2011-6-23 20:44:35 | 显示全部楼层
只有2位的16进制, 直接  num/16 ++ num %% 16 然后把 10替换为A,15替换为F。
转换成2进制,移位再%2,组合成二进制字符串。
至于取后14位,更简单,直接 num %% 2^14 。
发表于 2011-6-23 21:08:53 | 显示全部楼层
中间的一堆2进制就不计算了,直接计算最终结果。

  1. @ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
  2. if "%1"=="" (
  3.     set /p input=请输入:
  4. ) else (
  5.     set "input=%~1"
  6. )
  7. set "str=0123456789ABCDEF"
  8. for /f "tokens=1-3 delims=- " %%a in ("!input!") do (
  9.     set /a a1=%%a/16,a2=%%a %% 16,b1=%%b/16,b2=%%b %% 16,c1=%%c/16,c2=%%c %% 16
  10.     for %%i in (!a1! !a2! !b1! !b2! !c1! !c2!) do set "num=!num!!str:~%%i,1!"
  11. )
  12. echo,这是16进制数!num!。
  13. set /a code=0x!num! %% (1"<<"14)
  14. echo,这是后14位的10进制数!code!。
复制代码
发表于 2011-6-23 22:15:34 | 显示全部楼层
我不明白,楼主在批处理吧发的那帖不是已经有答案了吗?为何发信息说不正确?

转帖:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "s=5-251-38"
  4. for /f "tokens=1,2,3 delims=-" %%a in ("!s!") do (
  5. set /a "n=%%a*256*256+%%b*256+%%c"
  6. )
  7. set /a "n=n&0x3FFF"
  8. echo !n!
  9. pause
复制代码
链接:http://tieba.baidu.com/f?kz=1117011079   4楼  作者:liuzhaonan11
 楼主| 发表于 2011-6-27 23:47:06 | 显示全部楼层
我想要的是随便输入一个值就能计算这个数值,而不是算5-251=38.请帮忙再加一段请输入的程序好么
发表于 2011-6-28 20:03:51 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p s=请输入一个由3部分组成的10进制数(例如5-251-38):
  4. for /f "tokens=1,2,3 delims=-" %%a in ("!s!") do (
  5.     set /a "n=%%a*256*256+%%b*256+%%c"
  6. )
  7. set /a "n=n&0x3FFF"
  8. echo,!n!
  9. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 20:40 , Processed in 0.018543 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表