1

私は C# でオーディオ ライブラリに取り組んでおり、WAVE ファイル形式の ATM に取り組んでいます。私が使用している非常に有益なWeb サイトによると、WAVE は Pascal スタイルの文字列を使用しています。私は 20 分以上グーグルで調べましたが、 C から Pascal へのコンバーターしか思いつきませんでした。

Pascal と C の文字列を比較する方法を知っています (C コード):

char *cStr = "Test"; // C - produces {'T', 'e', 's', 't', '\0'}
char pascal[] = {4, 'T', 'e', 's', 't'}; // Pascal

それが役立つ場合はSystem.IO.BinaryReader、ファイルの解析に使用しています。

4

2 に答える 2

3

あなたがBinaryReaderこれを使用しているなら、これはかなり簡単なはずです。

var size = rd.ReadByte();
var body = rd.ReadBytes(size);
var text = System.Text.Encoding.ASCII.GetString(body);
于 2012-06-07T05:01:07.293 に答える
1

Pascal 文字列の背後にある基本的な考え方は、最初のバイトが文字列の長さを保持し、後続のバイトが文字列データを保持することです (文字列を 255 文字に制限します)。

私はバイト配列を操作し、C# で文字列からバイトへの変換メソッドを使用してデータを入力します。以下の質問の受け入れられた回答を参照して、C# 文字列をバイト配列に変換する方法を理解してください。文字列の長さを保持し、0 番目のバイト用のスペースを確保するためにすべてを 1 配列位置にオフセットし、0 番目のバイトに実際の文字列の長さ。入力文字列の長さを確認して、255 文字を超えていないことを確認してください :-)

エンコーディングを手動で指定せずに、C# で文字列の一貫したバイト表現を取得するにはどうすればよいですか?

于 2012-06-07T04:52:16.193 に答える