Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PHP';C语言中的s-pack(';N';,number)和二进制连接#_C#_Php_Binary_Pack - Fatal编程技术网

C# PHP';C语言中的s-pack(';N';,number)和二进制连接#

C# PHP';C语言中的s-pack(';N';,number)和二进制连接#,c#,php,binary,pack,C#,Php,Binary,Pack,如何将以下代码转换为C# 我已经成功地转换了函数的其余部分,但我不知道pack('N',number)是如何工作的,也不知道-运算符在PHP中应用于二进制变量时做了什么。pack('N',$number1)以大端字节顺序返回整数$number1作为4字节二进制字符串 “.”运算符连接字符串。pack('N',$number1)将整数$number1作为4字节二进制字符串以大端字节顺序返回 “.”运算符连接字符串。您可以使用位转换器来获取整数的字节表示形式,但您必须翻转它,因为在大多数机器上,它是

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

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

pack('N',$number1)以大端字节顺序返回整数$number1作为4字节二进制字符串

“.”运算符连接字符串。

pack('N',$number1)将整数$number1作为4字节二进制字符串以大端字节顺序返回


“.”运算符连接字符串。

您可以使用
位转换器
来获取整数的
字节
表示形式,但您必须翻转它,因为在大多数机器上,它是小尾数。因为我不知道您是将它们打包到
内存流
还是
字节[]
(虽然您应该这样做),所以我将确切地展示这一点

int myInt = 1234;
byte[] num1 = BitConverter.GetBytes( myInt );
if ( BitConverter.IsLittleEndian ) {
    Array.Reverse( num1 );
}
然后你可以把它转移到你的缓冲区,对于C来说,它可能是一个
字节[]
。下面是两个整数的计算方法:

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;

您可以使用
位转换器
来获取整数的
字节
表示形式,但是您必须翻转它,因为在大多数机器上它是小端数。因为我不知道您是将它们打包到
内存流
还是
字节[]
(虽然您应该这样做),所以我将确切地展示这一点

int myInt = 1234;
byte[] num1 = BitConverter.GetBytes( myInt );
if ( BitConverter.IsLittleEndian ) {
    Array.Reverse( num1 );
}
然后你可以把它转移到你的缓冲区,对于C来说,它可能是一个
字节[]
。下面是两个整数的计算方法:

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;
那么,如何从C#n中的一个整数中获得“以大端字节顺序排列的4字节二进制字符串”呢?如何从C#n中的一个整数中获得“以大端字节顺序排列的4字节二进制字符串”?