|
enjoyer
中级用户
部落守望者
积分 351
发帖 140
注册 2006-6-19
状态 离线
|
『楼 主』:
怎么用debug 命令实现将数字文本(ASCII)文件转换成二进制文件
我知道可以用e命令将数字从键盘输入, 再用w写文件的办法实现. 但这样很是麻烦. (如果用重定位的办法,文本里又要插入很多的e命令和空格) 诸位有没有更好的办法呢?
[ Last edited by enjoyer on 2006-11-29 at 07:34 AM ]
|
一切从底层开始 |
|
2006-11-28 09:50 |
|
|
enjoyer
中级用户
部落守望者
积分 351
发帖 140
注册 2006-6-19
状态 离线
|
『第
2 楼』:
怎么,作不到吗?
没人回,自己顶一下
|
一切从底层开始 |
|
2006-12-1 01:40 |
|
|
enjoyer
中级用户
部落守望者
积分 351
发帖 140
注册 2006-6-19
状态 离线
|
『第
3 楼』:
真地没办法了吗?
还是没人知道, 应个声吗.
|
一切从底层开始 |
|
2006-12-1 01:43 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2006-12-1 07:04 |
|
|
redtek
金牌会员
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
5 楼』:
来看下面这个贴子,可能会有兄需要的内容~:)
此代码会生成临时文件.如何让它不生成
http://www.cn-dos.net/forum/view ... id=mf2rxE#pid155430
|
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2006-12-1 07:30 |
|
|
enjoyer
中级用户
部落守望者
积分 351
发帖 140
注册 2006-6-19
状态 离线
|
『第
6 楼』:
更详细的解释...
Quote: | 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批处理不懂, 看来还得跟论坛的朋友多学学练练才是.
|
一切从底层开始 |
|
2006-12-1 10:25 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2006-12-1 11:27 |
|
|
enjoyer
中级用户
部落守望者
积分 351
发帖 140
注册 2006-6-19
状态 离线
|
『第
8 楼』:
回复DOSforever
Quote: | Originally posted by DOSforever at 2006-12-1 11:27:
我是这么认为的:实际上计算机中所有的数据都是以二进制形式保存和流动的,不存在以ASCII码保存或以真值保存这种说法,只是当这些数据显示给 ... |
|
你说的没错, 在计算机内部都是二进制表示,并没有区别. 如果我想看某一文件的二进制内容,可以用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 ]
|
一切从底层开始 |
|
2006-12-2 07:36 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2006-12-2 09:31 |
|
|
enjoyer
中级用户
部落守望者
积分 351
发帖 140
注册 2006-6-19
状态 离线
|
『第
10 楼』:
呵呵,其实我也是使劲的想,费力的思考,想让你很容易地明白我的问题, 没想到反而弄巧成拙了(因为是按自己的理解来解释). 为不再造成误解, 我用尽量少的语句说明白:
文件A,内容: 00110100 00110101(34H,35H占两个字节) -> 文件B, 内容: 01000101(45H,占一个字节) , 上面的转换我不想自己编程,想用debug命令实现.问,有没有这种可能.
|
一切从底层开始 |
|
2006-12-3 07:13 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2006-12-3 09:28 |
|
|
enjoyer
中级用户
部落守望者
积分 351
发帖 140
注册 2006-6-19
状态 离线
|
『第
12 楼』:
没学过批处理, 先学学再说吧, 谢谢了
|
一切从底层开始 |
|
2006-12-3 09:38 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-12-3 09:51 |
|
|
qzwqzw
银牌会员
天的白色影子
积分 2342
发帖 635
注册 2004-3-6
状态 离线
|
|
2006-12-4 07:19 |
|
|
tigerpower
中级用户
大师兄
积分 377
发帖 99
注册 2005-8-26
状态 离线
|
『第
15 楼』:
使用 mawk :
E:\>dir /b mawk.exe hex.txt hex2ascii.awk
mawk.exe
hex.txt
hex2ascii.awk
E:\>more hex.txt
20 20 bb b6 d3 ad c0 b4 b5 bd d6 d0 b9 fa 44 4f
53 c1 aa c3 cb c2 db cc b3 0d 0a 57 69 6e 64 6f
77 73 d0 c2 d2 bb b4 fa c3 fc c1 ee d0 d0 b9 a4
be df be a1 d4 da 3a 0d 0a 20 20 20 57 69 6e 50
45 a1 a2 50 6f 77 65 72 53 68 65 6c 6c b0 e5 bf
e9 21 0d 0a
E:\>more hex2ascii.awk
{gsub(/[ \n]*/,"")
for (i=1;i<=length($0)/2;i++){
cmd=sprintf("mawk \"BEGIN{printf \\\"\x%s\\\"}\"\n",substr($0,i*2-1,2))
system(cmd)}}
E:\>mawk -f hex2ascii.awk hex.txt
更多命令行工具,请到本论坛的
WinPE、PowerShell板块(点击进入)
|
|
2006-12-4 13:38 |
|