1

如何将以下代码转换为 C#?

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

我已经设法转换了函数的其余部分,但我不知道它是如何pack('N', number)工作的,也不知道.- 运算符在应用于 PHP 中的二进制变量时会做什么。

4

2 回答 2

1

BitConverter用来获取byte整数的表示形式,但您必须翻转它,因为在大多数机器上它是小端的。由于我不知道您是否将这些打包成MemoryStreamor 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;
于 2011-05-28T18:51:44.917 回答
0

pack('N', $number1) 以大端字节序的 4 字节二进制字符串形式返回整数 $number1。

这 ”。” 运算符连接字符串。

于 2011-05-28T18:24:16.027 回答