1

次のコードをC#に変換するにはどうすればよいですか?

return pack('N', $number1) . pack('N', $number2);

関数の残りの部分を変換することができましたが、どのように機能するのかわかりません。また、PHPのバイナリ変数に-operatorを適用したときにpack('N', number)何が行われるのかもわかりません。.

4

2 に答える 2

1

整数BitConverterの表現を取得するために使用しますが、ほとんどのマシンではリトルエンディアンであるため、反転する必要があります。これらをorbyteに詰め込んでいるかどうかはわかりませんが(そうすべきですが)、まさにそれを示します。MemoryStreambyte[]

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;
于 2011-05-28T18:51:44.917 に答える
0

pack('N', $number1) は、整数 $number1 をビッグ エンディアン バイト順の 4 バイト バイナリ文字列として返します。

「。」演算子は文字列を連結します。

于 2011-05-28T18:24:16.027 に答える