2

私は「顧客が作った」データベースを使ったプロジェクトに取り組んでいます。彼は、BinaryWriter.Write(String)メソッドとBinaryReader.ReadString()メソッドを使用して、バイナリファイルからデータを格納および取得するC ++/CLIアプリケーションを開発しました。

私はC++/ CLIの専門家ではありませんが、私が理解していることから、これらのメソッドは最初のバイトの7ビットエンコーディングを使用して文字列の長さを決定します。

私は鉄道アプリケーションから彼のデータにアクセスする必要があります、誰かがルビーで同じ考えをする方法のアイデアを持っていますか?

4

1 に答える 1

2

pack生のバイナリ データを扱っている場合は、およびunpackメソッドとそのさまざまなオプションに慣れるのに時間がかかるでしょう。おそらく、あなたが説明しているのは、長さが前もってエンコードされている「パスカル文字列」、またはそのバリエーションです。

例えば:

length = data.unpack("C")[0]
string = data.unpack("Ca#{length}")[0]

unpack最初のステップを実行するまで、展開する文字列の長さがわからないため、double-が必要です。data[1,length]UTF-8 データを扱っていないことが合理的に確信できる場合のように、部分文字列を使用してこれを行うこともできます。

于 2013-02-13T04:56:01.153 に答える