次のコードをC#に変換するにはどうすればよいですか?
return pack('N', $number1) . pack('N', $number2);
関数の残りの部分を変換することができましたが、どのように機能するのかわかりません。また、PHPのバイナリ変数に-operatorを適用したときにpack('N', number)
何が行われるのかもわかりません。.
整数BitConverter
の表現を取得するために使用しますが、ほとんどのマシンではリトルエンディアンであるため、反転する必要があります。これらをorbyte
に詰め込んでいるかどうかはわかりませんが(そうすべきですが)、まさにそれを示します。MemoryStream
byte[]
int myInt = 1234;
byte[] num1 = BitConverter.GetBytes( myInt );
if ( BitConverter.IsLittleEndian ) {
Array.Reverse( num1 );
}
そして、それをバッファに転送できます。C# の場合はbyte[]
. 2 つの整数を行う方法は次のとおりです。
int myInt1 = 1234;
int myInt2 = 5678;
byte[] temp1 = BitConverter.GetBytes( myInt1 );
byte[] temp2 = BitConverter.GetBytes( myInt2 );
if ( BitConverter.IsLittleEndian ) {
Array.Reverse( temp1 );
Array.Reverse( temp2 );
}
byte[] buffer = new byte[ temp1.Length + temp2.Length ];
Array.Copy( temp1, 0, buffer, 0, temp1.Length );
Array.Copy( temp2, 0, buffer, temp1.Length, temp2.Length );
return buffer;
pack('N', $number1) は、整数 $number1 をビッグ エンディアン バイト順の 4 バイト バイナリ文字列として返します。
「。」演算子は文字列を連結します。