无忧启动论坛

标题: 批处理中如何把16进制文件中的数字以十进制存入变量? [打印本页]

作者: gotomsdos    时间: 2005-5-3 18:11
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
[这个贴子最后由gotomsdos在 2005/05/03 07:39pm 第 3 次编辑]

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

作者: wang6071    时间: 2005-5-3 19:00
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
假设你的有03这个数字的文件是gamedate.txt
建立批处理setvar.bat如下:
@echo off
@echo set var= >temp.bat
type gamedate.txt>>temp.bat
call temp.bat

作者: gotomsdos    时间: 2005-5-3 19:31
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
老兄啊,你这个根本就不对呀,...你再看看好吗?

作者: wang6071    时间: 2005-5-3 21:02
标题: 批处理中如何把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改文件的),不是很完美.

作者: gotomsdos    时间: 2005-5-3 21:32
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
[这个贴子最后由gotomsdos在 2005/05/03 09:42pm 第 1 次编辑]

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


作者: wang6071    时间: 2005-5-3 22:22
标题: 批处理中如何把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:\目录下才会成功

作者: gotomsdos    时间: 2005-5-3 23:20
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
在XP DOS窗口可以吗?

作者: wang6071    时间: 2005-5-4 00:41
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
我是在win2003的cmd下试的,上面说的c:\有误,应该不限在同目录下都可以.
不知为何dos讨论区不能上传,否则我把测试的文件传给你.
如果未试验成功,在启动区发个贴子,俺传上测试文件.
作者: gotomsdos    时间: 2005-5-4 13:19
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
感谢 wang6071 !
我在XP DOS试了,VAR=  (这里个特殊符号),说明还是不成功..
另外,有间隔是不行的, 后面的程序就没法执行了.

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

作者: wang6071    时间: 2005-5-4 18:43
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
翻了一下以前下的dos增强程序,xset.exe可以完成以上任务
type gamedate.txt | XSET myvar
偶在98下测试成功
作者: gotomsdos    时间: 2005-5-4 18:59
标题: 批处理中如何把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中显示出来呀...
                                      ; ..
作者: gotomsdos    时间: 2005-5-5 00:36
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
简单的说,就是怎样在DOS,把16进制数字以10进制显示出来? 就行了!
后面的就好办了!

作者: gotomsdos    时间: 2005-5-5 01:12
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
我下了个XSET,但不行,
你能上传一个吗?

作者: wang6071    时间: 2005-5-5 20:29
标题: 批处理中如何把16进制文件中的数字以十进制存入变量?
gotomsdos:
dos专区不能上传附件,所以到启动区看贴子:
http://bbs.wuyou.net/cgi-bin/topic.cgi?forum=34&topic=8698&show=0





欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3