无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 11853|回复: 14

批处理中如何把16进制文件中的数字以十进制存入变量?

[复制链接]
发表于 2005-5-3 18:11:00 | 显示全部楼层 |阅读模式
[这个贴子最后由gotomsdos在 2005/05/03 07:39pm 第 3 次编辑]

有个文件,就一个字节,是数字,是16进制的(是我用DEBUG从16进制文件中的某个位置取出来的),比如,03
问题是: 怎样把它转换成十进制最后的结果是: var=03
我用GET把它存入变量,但是可能是16进制的原因, GET死机了,如是10进制或ASCII,就没问题
如下:
get ze /vvar < file (可把文件中的内容存入变量var)
(我要用它修改游戏的....)
??
急等...
发表于 2005-5-3 19:00:54 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

假设你的有03这个数字的文件是gamedate.txt
建立批处理setvar.bat如下:
@echo off
@echo set var= >temp.bat
type gamedate.txt>>temp.bat
call temp.bat
回复

使用道具 举报

 楼主| 发表于 2005-5-3 19:31:46 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

老兄啊,你这个根本就不对呀,...你再看看好吗?
回复

使用道具 举报

发表于 2005-5-3 21:02:18 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

修正一下:
@echo off
@echo set var= >temp.bat
type gamedate.txt>>temp.bat
debug temp.bat<change.txt
call temp.bat
change.txt如下:
e 109
20 20
w
q
别忘记在q后要多按一个回车.
最后结果如下:
var=   03      
多了两个空格(是偶用debug改文件的),不是很完美.
回复

使用道具 举报

 楼主| 发表于 2005-5-3 21:32:31 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

[这个贴子最后由gotomsdos在 2005/05/03 09:42pm 第 1 次编辑]

可以这样吗? debug temp.bat<change.txt
那么debug 和temp.bat 是怎么回事?
不行呀! 连变量都没产生

回复

使用道具 举报

发表于 2005-5-3 22:22:17 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

[这个贴子最后由wang6071在 2005/05/03 10:29pm 第 1 次编辑]
下面引用由gotomsdos2005/05/03 09:32pm 发表的内容:
可以这样吗? debug temp.bat<change.txt
那么debug 和temp.bat 是怎么回事?
不行呀! 连变量都没产生
当然可以啦(我已测试过),change.txt你按我楼上的贴子先建在c:\
我解释一下:
setvar.bat如下:
@echo off
@echo set var= >temp.bat   
type gamedate.txt>>temp.bat  //这两句产生一个temp.bat文件
debug temp.bat<change.txt    //用change.txt中先写好的命令修改tem.bat文件
call temp.bat
del temp.bat
注意:因为重定向的原因,上面的文件放到C:\目录下才会成功
回复

使用道具 举报

 楼主| 发表于 2005-5-3 23:20:40 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

在XP DOS窗口可以吗?
回复

使用道具 举报

发表于 2005-5-4 00:41:14 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

我是在win2003的cmd下试的,上面说的c:\有误,应该不限在同目录下都可以.
不知为何dos讨论区不能上传,否则我把测试的文件传给你.
如果未试验成功,在启动区发个贴子,俺传上测试文件.
回复

使用道具 举报

 楼主| 发表于 2005-5-4 13:19:42 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

感谢 wang6071 !
我在XP DOS试了,VAR=  (这里个特殊符号),说明还是不成功..
另外,有间隔是不行的, 后面的程序就没法执行了.
回复

使用道具 举报

发表于 2005-5-4 15:31:20 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

你说的:
  有个文件,就一个字节,是数字,是16进制的(是我用DEBUG从16进制文件中的某个位置取出来的),比如,03
俺是直接用记事本写一个03到文件gamedate.txt中的,恐怕你生成的这个文件不是这样的格式吧?而且上面俺写的批处理只是直接去掉重定向生成文件temp.bat中的第一个回车换行0d 0a将它们替换成了空格 20 20),所以你隔行肯定不会成功.
要解决你的这个问题恐怕要做到两点:
1:你的数据文件(gamedate.txt)的具本格式.
2:寻找或自已编写相应的程序来读入这个数据文件
不明白你的具体的要求是什么,你将数据03存入变量var中做何使用,贴出你这样做的目的,也许不用变量就可解决问题.
回复

使用道具 举报

发表于 2005-5-4 18:43:02 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

翻了一下以前下的dos增强程序,xset.exe可以完成以上任务
type gamedate.txt | XSET myvar
偶在98下测试成功
回复

使用道具 举报

 楼主| 发表于 2005-5-4 18:59:42 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

多谢了!
我有个DOS游戏SKYROADS,可能是老鸟都玩过的,记录过关次数的文件是SKYROADS.CFG,
其内容是可能是二进制的,共66字节
前6字节(0-5)是标志性的,不管它.从6开始,用两个字节记录过关次数,低位在前,高位在后.比如0300,0500,0700..... ,第6-7表示第一车道,第8-9表示第二车道,第A-B表示第三车道,由于第二字节总是00,所以,实际上,就是第6表示第一车道,第8表示第二车道,第A表示第三车道,
第一字节范围在0-7之间.(所以,16进制10进制都一样)
文件是这样的:
00000000h: 10 02 00 00 00 00 01 00 02 00 03 00 00 00 00 00 ; ................
00000010h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000020h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000030h: 00 00 00 00 00 00 00 00 00 00 00 00 05 00 06 00 ; ................
00000040h: 07 00  
那么在相应的位置改掉数字,那么游戏的成绩显示就变成了改后的样子,这个我已经用DEBUG作到了.并且我用WBAT作了图形来给玩家选择,在相应的车道框内添上0-7的数字,就能改
但是,先要给出目前的游戏成绩的样子,这就需要从那个文件中的各个位置,读出来(注意,是二进制的,你那个用记事本给的没用的.)给变量,才能在WBAT的BAT中显示出来呀...
                                      ; ..
回复

使用道具 举报

 楼主| 发表于 2005-5-5 00:36:02 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

简单的说,就是怎样在DOS,把16进制数字以10进制显示出来? 就行了!
后面的就好办了!
回复

使用道具 举报

 楼主| 发表于 2005-5-5 01:12:01 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

我下了个XSET,但不行,
你能上传一个吗?
回复

使用道具 举报

发表于 2005-5-5 20:29:36 | 显示全部楼层

批处理中如何把16进制文件中的数字以十进制存入变量?

gotomsdos:
dos专区不能上传附件,所以到启动区看贴子:
http://bbs.wuyou.net/cgi-bin/topic.cgi?forum=34&topic=8698&show=0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-28 21:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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