1

我有一个由一堆“行”数据组成的文件(实际上不是在单独的行上)。据我从描述(PDF)中可以看出,每个“行”精确地有 40 个字节,如下所示:

  • 我可以忽略 4 个字节。
  • 2 个字节,它们是(十进制)整数 240 或 241(即 00 F0 或 00 F1)的字节表示形式,具体取决于“行”。
  • 我可以忽略 4 个字节。
  • 11 个字节:前几个字节是我需要的 ASCII 字符串,其余字节填充 00 个字节。
  • 1个字节我可以忽略。
  • 我需要 1 个字节。从文档看来,这似乎是 ASCII 'B'、'S' 或 '0'。
  • 1 个字节,它是一个小整数的字节表示,即 00、01 等。
  • 4 个字节,它们是整数的字节表示形式。
  • 4 个字节,它们是整数的字节表示形式。
  • 4 个字节,它们是整数的字节表示形式。
  • 4 个字节,它们是整数的字节表示形式。

并且文件中没有其他内容(例如,没有文件头)。(我对链接到的文档的理解很可能是错误的,如果有任何更正,我将不胜感激;更多信息可能在其他地方提供(PDF)。)

我希望:

  1. 将数字的每个字节表示转换为数字的人类可读表示,并将每个 00 字节转换为(例如)人类可读的 0,以及
  2. 将文件转换为逗号分隔等。

现在,步骤 (2) 应该可以使用 sed;我提到它只是因为我想确保步骤 (1) 的完成是允许步骤 (2) 的方式(例如,在执行步骤 (1) 时跟踪每个字段的字节数)。但是步骤(1)我不知道该怎么做。任何人都可以帮忙吗?

作为一个警告,请注意我对 sed 和 bash 很满意,并且可以处理 perl,但没有真正的编程经验;而且,唉,我在没有安装程序权限的 Windows 机器上执行此操作,所以(尽管我有一个 sed 端口)我没有 bash。因此,基本上,我需要在 sed 或 Windows (DOS) 命令行脚本中执行此操作。(不过,如果有必要的话,我应该能够将文件下载到另一台机器上,使用它们并上传它们。)

4

1 回答 1

1

Perl 有一个你可以使用的解包函数。

于 2013-02-05T20:00:05.053 回答