-2

一部の Pascal を PHP に変換しています。戻り型の関数内AnsiStringには、次のコード行があります。

SetLength(Result, 3);
Move(I, Result[1], Length(Result));

Iは、Longint値が 5051253 のResultです'u'#19'M'

PHPでそれを複製するにはどうすればよいですか? それは何をしているのですか?Moveからバイトを読み取りI、に入れることを知っていますResult

4

2 に答える 2

3

最初の行は、変数 "Result" の長さを 3 バイトに設定します。

I の値がどこから来たのかはわかりませんが、メモリ内の別の変数を指している可能性があります。

2行目は、そのポイントされたメモリ領域から変数「Result」に3バイトをコピーしています。

あなたがしなければならないことは、その変数 "I" が指している場所を調べ、それに従って PHP コードを構築することです。

たとえば、別の ansistring 変数「Source」を参照するとします。次に、それを行うことができます:

`$Result = substr($Source, 0, 3);'

于 2013-01-21T06:52:49.810 に答える
2
function low3bytes( $I) {
  return chr(         $I           % 256)
       . chr( ((int) ($I /   256)) % 256)
       . chr( ((int) ($I / 65536)) % 256);
}

警告:テストされていません。

于 2013-01-21T08:02:34.867 に答える