标题: [数值计算] 批处理如何实现进制转换后区后14位? [打印本页]
作者: tanghow 时间: 2011-6-23 19:26 标题: 批处理如何实现进制转换后区后14位?
将一个由3部分组成的10进制数(例如5-251-38)转换成16进制的数(例如05FB26),然后将这个16进制的数字转换成2进制的数(例如1011111101100100110),然后取这个2进制数字的后14位,将这个14位的2进制数转换成10进制的结果,请问批处理语言怎样实现上述功能啊,(PS:输入的那个由3部分组成的10进制数每一部分都不会大于256),请帮忙,谢谢
联系方式:[email]tanghow@sina.com[/email]
作者: caruko 时间: 2011-6-23 20:44
只有2位的16进制, 直接 num/16 ++ num %% 16 然后把 10替换为A,15替换为F。
转换成2进制,移位再%2,组合成二进制字符串。
至于取后14位,更简单,直接 num %% 2^14 。
作者: caruko 时间: 2011-6-23 21:08
中间的一堆2进制就不计算了,直接计算最终结果。- @ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
- if "%1"=="" (
- set /p input=请输入:
- ) else (
- set "input=%~1"
- )
- set "str=0123456789ABCDEF"
- for /f "tokens=1-3 delims=- " %%a in ("!input!") do (
- set /a a1=%%a/16,a2=%%a %% 16,b1=%%b/16,b2=%%b %% 16,c1=%%c/16,c2=%%c %% 16
- for %%i in (!a1! !a2! !b1! !b2! !c1! !c2!) do set "num=!num!!str:~%%i,1!"
- )
- echo,这是16进制数!num!。
- set /a code=0x!num! %% (1"<<"14)
- echo,这是后14位的10进制数!code!。
复制代码
作者: CrLf 时间: 2011-6-23 22:15
我不明白,楼主在批处理吧发的那帖不是已经有答案了吗?为何发信息说不正确?
转帖:- @echo off
- setlocal enabledelayedexpansion
- set "s=5-251-38"
- for /f "tokens=1,2,3 delims=-" %%a in ("!s!") do (
- set /a "n=%%a*256*256+%%b*256+%%c"
- )
- set /a "n=n&0x3FFF"
- echo !n!
- pause
复制代码
链接:http://tieba.baidu.com/f?kz=1117011079 4楼 作者:liuzhaonan11
作者: tanghow 时间: 2011-6-27 23:47
我想要的是随便输入一个值就能计算这个数值,而不是算5-251=38.请帮忙再加一段请输入的程序好么
作者: HAT 时间: 2011-6-28 20:03
- @echo off
- setlocal enabledelayedexpansion
- set /p s=请输入一个由3部分组成的10进制数(例如5-251-38):
- for /f "tokens=1,2,3 delims=-" %%a in ("!s!") do (
- set /a "n=%%a*256*256+%%b*256+%%c"
- )
- set /a "n=n&0x3FFF"
- echo,!n!
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |