查看: 2454|回复: 7

[已经解决] 谁知道有批处理填充二进制数据的软件吗?

[复制链接]
梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
回帖
557
发表于 2011-11-21 16:28:31 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 赛露休斯 于 2011-11-22 14:02 编辑

几千个文件长度不对,想在文件后面填充几个字节的空数据,谁知道有批处理填充二进制数据的软件吗?
最近在研究XAS

老黄鸡

梦石
4
星屑
45805
在线时间
7957 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2011-11-21 16:54:50 | 显示全部楼层
本帖最后由 fux2 于 2011-11-21 17:13 编辑

vb可以吧

ole控件dragdrop函数
dim i,s() as byte
for i = 1 to Data.count
  open Data.Files(i) for Binary as #1
    Get #1,,s()
    redim s(lof(1)+补充字节长度) as byte
  close #1
  加字符处理
  open Data.Files(i) for Binary as #2
    Put #2,,s
  close #2
next i
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

酱油的

梦石
0
星屑
1840
在线时间
2161 小时
注册时间
2007-12-22
回帖
3216

贵宾

发表于 2011-11-21 17:38:57 | 显示全部楼层
RM就可以了O O
File.size("xxxx")
然後你想填啥就 puts 吧= =

点评

批处理的话这样很蛋疼吖  发表于 2011-11-21 18:05
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复

使用道具 举报

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
回帖
557
 楼主| 发表于 2011-11-21 18:12:53 | 显示全部楼层
本帖最后由 赛露休斯 于 2011-11-21 18:49 编辑

vb的没看懂,装了vb,但不会用
RM的,我要在后面添加像 00 00 00 00 这样的该怎么做?

点评

2K啊……那就稍微修改一下代码就行。这个要结合批处理调用哦。  发表于 2011-11-22 11:24
最近在研究XAS
回复

使用道具 举报

梦石
0
星屑
1580
在线时间
1564 小时
注册时间
2008-7-30
回帖
4207

贵宾

发表于 2011-11-21 23:24:38 | 显示全部楼层
用C语言写了一个小工具,输出指定个数个 '\0',当然,应该要小于45个……

ab.rar (5.99 KB, 下载次数: 42)

别吐槽代码了……一分钟先生。(GCC编译通过)ab 5 >> your_file 即可向your_file末尾输出 5 个 00 。
  1. #include <stdio.h>

  2. int main(int argc, char *argv[])
  3. {
  4.         if(argc > 2)
  5.                 return 0;
  6.                
  7.         char buf[] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', \
  8.                                    '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', \
  9.                                    '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', \
  10.                                    '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', \
  11.                                    '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' } ;
  12.         write(1, buf, atoi(argv[1]));
  13.         return 1;
  14. }
复制代码

点评

运行的时候黑屏闪了一下就关闭了,另外后面需要填充也有近2k的 00 吧,不过还是谢了  发表于 2011-11-22 01:56

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复

使用道具 举报

梦石
0
星屑
1580
在线时间
1564 小时
注册时间
2008-7-30
回帖
4207

贵宾

发表于 2011-11-22 13:51:16 | 显示全部楼层
本帖最后由 DeathKing 于 2011-11-22 13:53 编辑

这个东西当然要和批处理一起用啦,首先你要枚举你要添加的文件,然后计算需要添加的空字节个数。假定是由%NullChar%决定的,批处理大概就是这样:
遍历文件,并置变量%CurFileName%为当前文件名
计算需要添加的空字节个数,并置变量%NullChar%为响应值
ab %NullChar% >> %CurFileName%

使用Shell的重定向,而不直接在C语言编写的程序内进行读写操作,是因为我用的GCC……实现遍历文件不如直接用批处理实现更快。不过这个的字数仍然有限制,2K应该是很轻易的拉~
  1. /**********************************
  2. * Append Binary
  3. * author: DeathKing
  4. * date  : 2011-11-22
  5. **********************************/

  6. #include <stdio.h>
  7. #include <stdlib.h>

  8. int main(int argc, char *argv[])
  9. {
  10.   if(argc == 2) {
  11.     int c = atoi(argv[1]);
  12.     if(c > 32) {
  13.       char *block = (char *)malloc(sizeof(char) * c);
  14.       for(int i=0; i < c; ++i)
  15.         block[i] = '\0';
  16.       write(1, block, c);
  17.     } else {
  18.       char buf[32] = {  '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',\
  19.                          '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',\
  20.                          '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',\
  21.                          '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' };
  22.       write(1, buf, c);
  23.       return 1;
  24.     }
  25.    } else {
  26.     printf("Usage: ab number to output 00 to stdout\n");
  27.     exit(EXIT_FAILURE);
  28.    }
  29. }
复制代码
ab.rar (19.17 KB, 下载次数: 39)

点评

没用Append,我直接用我现成的过程操作的文件。  发表于 2011-11-22 14:59

评分

参与人数 1星屑 +14 收起 理由
赛露休斯 + 14 非常感谢^_^

查看全部评分


See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复

使用道具 举报

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
回帖
557
 楼主| 发表于 2011-11-22 14:00:35 | 显示全部楼层
这个问题已经找到解决方法了,不过还是谢谢LS了
另外,批处理调用,是在cmd里调用吗?还没试出来,这方面不太了解,请教一下

点评

一般都是保存代码到文件,然后扩展名改成bat。执行的时候的确调用的是cmd。  发表于 2011-11-22 14:05
最近在研究XAS
回复

使用道具 举报

勥

梦石
0
星屑
72
在线时间
673 小时
注册时间
2006-10-3
回帖
1674

开拓者

发表于 2011-11-22 14:02:51 | 显示全部楼层
嘿嘿,这个咱昨晚帮解决了。
基本和fux2思路一样。VB OLE。

ATTACH.rar

6.9 KB, 下载次数: 3

点评

这模块真好用= =  发表于 2011-11-22 15:02
VB有个打开文件的方式叫做Append,Fux没用,你应该用了吧?  发表于 2011-11-22 14:32
( ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็ ω ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้【看猫君玩,我也搞一只】)
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部