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