c# - 如何将 int 转换为小端字节数组?

标签 c# bit-manipulation

我在 C# 中有这个函数可以将小端字节数组转换为整数:

int LE2INT(byte[] data)
{
  return (data[3] << 24) | (data[2] << 16) | (data[1] << 8) | data[0];
}

现在我想把它转换回小端.. 有点像

byte[] INT2LE(int data)
{
  // ...
}

有什么想法吗?

谢谢。

最佳答案

BitConverter 类可以用于此,当然,它也可以用于小端和大端系统。

当然,您必须跟踪数据的字节顺序。例如,对于通信,这将在您的协议(protocol)中定义。

然后您可以使用BitConverter 类将数据类型转换为字节数组,反之亦然,然后使用IsLittleEndian 标志查看是否需要转换是否在您的系统上。

IsLittleEndian 标志会告诉您系统的endianness,因此您可以按如下方式使用它:

这是来自 BitConverter 类的 MSDN 页面。

  int value = 12345678; //your value
  //Your value in bytes... in your system's endianness (let's say: little endian)
  byte[] bytes = BitConverter.GetBytes(value);
  //Then, if we need big endian for our protocol for instance,
  //Just check if you need to convert it or not:
  if (BitConverter.IsLittleEndian)
     Array.Reverse(bytes); //reverse it so we get big endian.

您可以找到完整的文章 here

希望这对来到这里的人有帮助:)

关于c# - 如何将 int 转换为小端字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2350099/

相关文章:

c# - 使用正则表达式匹配零

c# - 如何将列表转换为 C# 中的 observablecollection?

c# - 并行性,几千个线程

c# - 计算大文件的Md5 Hash

c++ - 比较位集的最快方法(<位集上的运算符)?

算法:如何生成按二进制表示中 1 的个数排序的数字?

algorithm - 找到最少数量的位序列 OR 来实现全 1?

c# - 迷宫墙上的按位逻辑

c# - 如何确定数组中的哪个字符串与给定字符串最相似?

java - 如何正确从rgb565转换为rgb888