1

データの「行」の束で構成されるファイルがあります(実際には別々の行ではありません)。説明(PDF)からわかる限り、次のように、各「行」は正確に 40 バイトです。

  • 無視できる4バイト。
  • (10 進) 整数 240 または 241 のバイト表現である 2 バイト — つまり、「行」に応じて 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 には、使用できるunpack関数があります。

于 2013-02-05T20:00:05.053 に答える