如何使用c#将big endian发送到网络流

How to send big endian to network stream using c#

我尝试通过 sslStream 使用套接字传输文件数据。看来我必须在数据之前发送文件数据长度。问题是代码

Byte [] size = BitConverter.GetBytes(fileData.Length)

Returns 小端,但互联网协议使用大端。

如何将其转换为大端并将其写入流;

我假设您只想发送一个 int 值。传输前字节顺序要颠倒:

byte[] bytes = BitConverter.GetBytes(fileData.Length);
if (BitConverter.IsLittleEndian)
     Array.Reverse(bytes); 

检查 this MSDN page 以获取有关 BitConverted 的更多信息。

您也可以使用HostToNetworkOrder进行转换,例如:

int reversed = IPAddress.HostToNetworkOrder(fileData.Length);
byte[] bytes = BitConverter.GetBytes(reversed);

要发送这些字节,请使用 Write 方法:

stream.Write(bytes, 0, bytes.Length);