0

「pack」/「unpack」php関数について少し混乱しているので、次のJavaコードと同等のphpが必要です。

....
byte[] TempByte = {1, (byte)0x01};
...

php:

?

どうも

4

3 に答える 3

2

phpは大まかに型付けされており、byte[]型がないため、実際のphpに相当するものはありません。

Javaコードに最もよく似ているコードは次のとおりです。

$TempByte = array(1, chr(1));
于 2012-10-24T07:41:01.633 に答える
1

そのJavaコードが何をするのか100%わかりませんが、次のようなものと同等に見えます。

$tempByte = "\x01\x01";

「バイト配列」は基本的にPHPの文字列であり、「文字列」は基本的にPHPのバイト配列です。配列オフセット構文を使用して、この「バイト配列」にアクセスすることもできます。

echo bin2hex($tempByte[0]);
于 2012-10-24T07:42:36.140 に答える
1

投稿したコードは、 bytesという2つの要素で構成されるバイト配列を初期化します。

PHPは弱い型付けであるため、このコードと完全に同等のものを取得することはできません。これは、PHP型のリストから確認できます。

どちらの言語にも配列があるので、ここでは問題ありませんが、PHPにはバイトがありません。

Javaでは、バイトは-128から127(両端を含む)の範囲の符号付き8ビット値として定義されます。

そのPHPに最も近いものは整数ですが、次のようになります。

整数のサイズはプラットフォームに依存しますが、最大値の約20億が通常の値(32ビット符号付き)です。64ビットプラットフォームの最大値は通常約9E18です。PHPは符号なし整数をサポートしていません。整数サイズは定数PHP_INT_SIZEを使用して決定でき、最大値は定数PHP_INT_MAXを使用してPHP4.4.0およびPHP5.0.5以降で決定できます。

したがって、私の提案は(32ビットプラットフォームの場合)次のようになります。

$TempByte = array(0x0001 & 1, 0x0001 & 1);
于 2012-10-24T08:06:43.787 に答える