提问者:小点点

如何将4个8位坐标存储到一个整数(C#)中?


假设我有以下四个变量:player1X,player1Y,player2X,player2y。 例如,它们分别具有以下值:5,10,20,12。 这些值中的每一个最大值是8位,我想把它们存储到一个整数(32位)中,如何才能实现这一点呢?

通过这样做,我想创建一个字典,记录游戏中某些状态发生的频率。 例如,5,10,20,12是一种状态,6,10,20,12将是另一种状态。


共3个答案

匿名用户

您可以使用BitConverter

要从4个字节中获取一个整数,请执行以下操作:

int i = BitConverter.ToInt32(new byte[] { player1X, player1Y, player2X, player2Y }, 0);

要从整数中取出四个字节,请执行以下操作:

byte[] fourBytes = BitConverter.GetBytes(i);

匿名用户

为了在32位空间中“压缩”4个8位值,您需要“移位”各个值的位,并将它们相加。

相反的操作是“unshift”,使用一些模来得到你需要的单个数字。

匿名用户

这里有一个变式:

使用定义的填充创建结构。 曝光:

  • int32和所有4个字节同时使用
  • 确保apcing重叠(即int从0开始,字节变量从0,1,2,3开始

搞定了。

您可以很容易地访问和使用它们,而不需要比特转换器等,并且永远不必定义数组,这是昂贵的jsut扔掉它。