如何使用c#将big-endian发送到网络流
本文关键字:网络 big-endian 何使用 | 更新日期: 2023-09-27 18:26:17
我尝试通过sslStream传输带有套接字的文件数据。似乎我必须在发送数据之前先发送文件数据长度。问题是代码
Byte [] size = BitConverter.GetBytes(fileData.Length)
以小端序返回,但互联网协议使用的是大端序。
如何将其转换为big-endian并将其写入流;
我假设您只想发送一个int
值。在传输之前,字节的顺序应该颠倒:
byte[] bytes = BitConverter.GetBytes(fileData.Length);
if (BitConverter.IsLittleEndian)
Array.Reverse(bytes);
查看此MSDN页面以获取有关BitConverted
的详细信息。
您也可以使用HostToNetworkOrder
进行转换,例如:
int reversed = IPAddress.HostToNetworkOrder(fileData.Length);
byte[] bytes = BitConverter.GetBytes(reversed);
要发送这些字节,请使用Write
方法:
stream.Write(bytes, 0, bytes.Length);