如何使用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);
我尝试通过 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);