![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 01:02 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 怎么用debug 命令实现将数字文本(ASCII)文件转换成二进制文件 |
| 可打印版本 4,477 / 16 |
| 第1楼 enjoyer | 发表于 2006-11-28 09:50 |
| 中级用户 发帖 140 积分 351 | |
|
怎么用debug 命令实现将数字文本(ASCII)文件转换成二进制文件 我知道可以用e命令将数字从键盘输入, 再用w写文件的办法实现. 但这样很是麻烦. (如果用重定位的办法,文本里又要插入很多的e命令和空格) 诸位有没有更好的办法呢?
[ Last edited by enjoyer on 2006-11-29 at 07:34 AM ] |
|
| 第2楼 enjoyer | 发表于 2006-12-01 01:40 |
| 中级用户 发帖 140 积分 351 | |
|
怎么,作不到吗? 没人回,自己顶一下
|
|
| 第3楼 enjoyer | 发表于 2006-12-01 01:43 |
| 中级用户 发帖 140 积分 351 | |
|
真地没办法了吗? 还是没人知道, 应个声吗.
|
|
| 第4楼 DOSforever | 发表于 2006-12-01 07:04 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
说实话,我没能理解你的意思。你说的二进制文件是怎么个二进制文件?最好举例说明一下。
|
|
| 第5楼 redtek | 发表于 2006-12-01 07:30 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
来看下面这个贴子,可能会有兄需要的内容~:)
此代码会生成临时文件.如何让它不生成 http://www.cn-dos.net/forum/viewthread.php?tid=25233&pid=155430&page=1&sid=mf2rxE#pid155430 |
|
| 第6楼 enjoyer | 发表于 2006-12-01 10:25 |
| 中级用户 发帖 140 积分 351 | |
更详细的解释...Originally posted by DOSforever at 2006-12-1 07:04: 怪我没说明白, 举个例子吧. 比如说在notebook里随意键入一串数字, 保存. 此时计算机磁盘里保存的是这些数字的 ASCII码, 而我想让得到的是真值. 怎么办? 除自己写程序外, 我想到的一个办法是: 编辑文本, 内容如下: e100 32 34 f5 53 8a 8c 98 2e e108 5f ff fe 30 5b 1e 20 39 ... ... n num.txt rcx xx w q 保存为1.txt 后,进入dos窗口,来到保存路径下: debug < 1.txt 回车 于是就生成 二进制文件 num.txt (可以用debug 加载验证) 但这种方法要在数字里加入空格, 各行前都要有debug命令e..., 而且要计算行首对应地址, 仍嫌麻烦. 就是想知道debug有没有更便捷的方法,完成这个转换. 请兄帮帮忙, 多谢关注. 还有redtek兄也谢谢你的热心, 不过我对dos批处理不懂, 看来还得跟论坛的朋友多学学练练才是. |
|
| 第7楼 DOSforever | 发表于 2006-12-01 11:27 |
| 金牌会员 发帖 2,239 积分 4,639 | |
此时计算机磁盘里保存的是这些数字的 ASCII码, 而我想让得到的是真值. 我是这么认为的:实际上计算机中所有的数据都是以二进制形式保存和流动的,不存在以ASCII码保存或以真值保存这种说法,只是当这些数据显示给你看的时候,你想以什么形式给显示出来。可以以十六进制形式、ASCII码形式、二进制形式、八进制形式等等。只是前两种是我们最常用的形式。 根据你的例子,我想你是想得到文件内容中每个字节的十六进制的值是什么,对吗?也就是说,对一个已知文件想让它以十六进制值的方式显示出来,对吗? |
|
| 第8楼 enjoyer | 发表于 2006-12-02 07:36 |
| 中级用户 发帖 140 积分 351 | |
回复DOSforeverOriginally posted by DOSforever at 2006-12-1 11:27: 你说的没错, 在计算机内部都是二进制表示,并没有区别. 如果我想看某一文件的二进制内容,可以用UltraEdit的16进制方式 , 或者debug 加载查看. 这没有问题. 某些文本编辑器(象debug,UE32) 带有从bin到ASCII值的转换, 即: 45H(bin形式存于内存中) -> 34 35(ASCII值) ->按ASCII表对应关系显示(显示器) 我想要的功能刚好相反, 如下: 34 35(保存在内存中的ASCII值) -> 45H (保存在内存中的bin) 即完成一个文本数据到二进制的转换. 如果数据很少还可以, 用先前的文件重定向办法就能应付, 关键是批量数据就不好办了. [ Last edited by enjoyer on 2006-12-2 at 08:27 AM ] |
|
| 第9楼 DOSforever | 发表于 2006-12-02 09:31 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
我是看得有点糊涂了,你的理解可能对的,但你的表达我认为有点错误。我是使劲的想,费力的思考。大概有点猜对你的意思了。
“45H”就已经是表示ASCII码值了,即该字节的二进制值为 01000101B ,表示成十六进制值为 45H ,你看到的 45 ≠ "4" "5" 这两个字符(当然,为了告诉你它的十六进制值为多少,显示出来的是"4"和"5"这两个字符)。45H 所对应的ASCII码字符为 "E" 。所以应该这么说我认为比较确切些: 01000101B(bin形式存于内存中)-> 45H(hex表示。ASCII值)-> 字符"E"(按ASCII表码值对应的字符显示出来) 你的问题应该这么说:已知ASCII码值(并且是十六进制的),求如得到它对应的ASCII字符。对吗?是这意思吗? |
|
| 第10楼 enjoyer | 发表于 2006-12-03 07:13 |
| 中级用户 发帖 140 积分 351 | |
|
呵呵,其实我也是使劲的想,费力的思考,想让你很容易地明白我的问题, 没想到反而弄巧成拙了(因为是按自己的理解来解释). 为不再造成误解, 我用尽量少的语句说明白:
文件A,内容: 00110100 00110101(34H,35H占两个字节) -> 文件B, 内容: 01000101(45H,占一个字节) , 上面的转换我不想自己编程,想用debug命令实现.问,有没有这种可能. |
|
| 第11楼 DOSforever | 发表于 2006-12-03 09:28 |
| 金牌会员 发帖 2,239 积分 4,639 | |
|
除了你不想用的 e 命令外,没有用 debug 实现的这种可能。
可以用 4DOS 的 @char 变量函数加以转换,如果你原文件的内容全都是十六进制的数值,可以在 @char 中嵌套 @convert 变量函数转换十六进制值为十进制值,因为 @char 只能用十进制数作为变量。 |
|
| 第12楼 enjoyer | 发表于 2006-12-03 09:38 |
| 中级用户 发帖 140 积分 351 | |
|
没学过批处理, 先学学再说吧, 谢谢了
|
|
| 第13楼 不得不爱 | 发表于 2006-12-03 09:51 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
我想可以用命令生成一个和目标文件一样大小的文件,然后用FC/B命令来进行2进制比较,然后将比较的结果里是目标文件里的二进制取出来保存为文件就可以了
|
|
| 第14楼 qzwqzw | 发表于 2006-12-04 07:19 |
| 银牌会员 发帖 636 积分 2,343 | |
|
楼上仍然理解反了!
而且没有多大的实现可能性,因为fc/b只显示不同的字节值,这样目标内容势必会有丢失。 建议楼主看看这个帖子 http://www.cn-dos.net/forum/viewthread.php?tid=21955&fpage=1 |
|
| 第15楼 tigerpower | 发表于 2006-12-04 13:38 |
| 中级用户 发帖 99 积分 377 | |
|
使用 mawk :
更多命令行工具,请到本论坛的 WinPE、PowerShell板块(点击进入) |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |