中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 23:52
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 求助:set进行十进制计算,却得到八进制结果
可打印版本  1,064 / 3
第1楼 rongfeng98 发表于 2009-12-03 17:37
新手上路 发帖 4 积分 5
求助:set进行十进制计算,却得到八进制结果
@echo off
set var=000100100003
set a=%var:~4,4%
set /a b=%a%+1
echo %a%+1是%b%
pause

今天第一次遇到这样的问题,本想是十进制计算问题,结果却是八进制计算结果???
中间四位数据有很多种情况,请不要使用截取长度的方法。

[ Last edited by rongfeng98 on 2009-12-3 at 17:44 ]
第2楼 rongfeng98 发表于 2009-12-04 12:25
新手上路 发帖 4 积分 5
已解决
第3楼 Hanyeguxing 发表于 2009-12-10 15:54
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
批处理在运算时,会认定所有以0开头的数字为8进制,以0x开头的为16进制。
在set /a和if比较运算时,要注意这个问题
第4楼 rongfeng98 发表于 2009-12-25 16:14
新手上路 发帖 4 积分 5
谢谢!后来经过测试,的确如Hanyeguxing所说。
加上进制标志符
@echo off
set var=0x00010x000a0x0003
set a=%var:~6,6%
set /a b=%a%+1
echo %a%+1是%b%
pause
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023