我使用 System.IO.BinaryReader 从序列化文件中读取数据。该文件是大端。所以我从流中读取 Int64 (long) 的操作是从中读取 8 个字节。我需要做的是将这 8 个字节的大端转换为小端长表示。
我不能使用 System.BitConverter,因为它将使用 Mono 编译以在 Linux 上使用,可以在大端和 Visual Studio for Windows 上运行,它可以在小端上运行。
我使用 System.IO.BinaryReader 从序列化文件中读取数据。该文件是大端。所以我从流中读取 Int64 (long) 的操作是从中读取 8 个字节。我需要做的是将这 8 个字节的大端转换为小端长表示。
我不能使用 System.BitConverter,因为它将使用 Mono 编译以在 Linux 上使用,可以在大端和 Visual Studio for Windows 上运行,它可以在小端上运行。
您可以使用System.Net.IPAddress.NetworkToHostOrder
或System.Net.IPAddress.HostToNetworkOrder
例如,
System.Net.IPAddress.HostToNetworkOrder(0x0123456789abcdefl)
将返回efcdab8967452301
如果您最终还是要使用 Mono,则可以使用DataConvert。
在 Windows 上也可以正常工作。我在我的一个项目中使用它。
John Skeet 的miscutil库实现了 BigEndianBitConverter。