如何将以下代码转换为 C#?
return pack('N', $number1) . pack('N', $number2);
我已经设法转换了函数的其余部分,但我不知道它是如何pack('N', number)
工作的,也不知道.
- 运算符在应用于 PHP 中的二进制变量时会做什么。
您BitConverter
用来获取byte
整数的表示形式,但您必须翻转它,因为在大多数机器上它是小端的。由于我不知道您是否将这些打包成MemoryStream
or 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) 以大端字节序的 4 字节二进制字符串形式返回整数 $number1。
这 ”。” 运算符连接字符串。