0

私はいくつかの C# 解凍コードを AS3 に移植しています。これはかなり複雑なことを行っているため、 や などのさまざまなデータ型を使用していbyteますshort。問題は、AS3 にこれらのデータ型がないことです。

ほとんどの場合、uintこれらの値を保持するために使用できます。ただし、いくつかの時点で、次のような行が表示されます。

length[symbol++] = (short)len;

私の理解では、これは を読み取り、配列に としてlen割り当てる必要があることを意味します。AS3 でこれを行うにはどうすればよいでしょうか。私はおそらく次のように推測しています:lengthshort

length[symbol++] = len & 0xFF;

しかし、これが適切な結果をもたらすかどうかはわかりません。

基本的に、私の質問は次のとおりです。AS3 でこのようなことを行うときに、正しいバイト数を維持するにはどうすればよいですか? たぶん、ByteArray代わりに s を使用する必要がありますか?

4

1 に答える 1

0

キャストが C# コードで行われる理由によっては、AS3 コードでキャストを維持する必要がある場合とそうでない場合があります。キャストが純粋に配列の要素の型に合わせて型を調整する場合length(つまり、精度が失われない場合)、キャストは必要ありません。len実際に 0x7FFF より大きい場合は、キャストを実行する必要があります。

ByteArrayC# と同様の結果を処理する必要がある場合、おそらく妥当なオプションだと思いますStreamReaderが、ランダムアクセスは必要以上に難しい場合があります。

shortは 2 バイトの長さ ( の同義語System.Int16) であるため、ビット操作を使用して変換するには、 を実行する必要があることに注意してください& 0xFFFF。署名された型と署名されていない型の間でキャストする場合も非常に注意してください...

于 2013-05-28T04:33:20.223 に答える