假设我有以下四个变量:player1X,player1Y,player2X,player2y。 例如,它们分别具有以下值:5,10,20,12。 这些值中的每一个最大值是8位,我想把它们存储到一个整数(32位)中,如何才能实现这一点呢?
通过这样做,我想创建一个字典,记录游戏中某些状态发生的频率。 例如,5,10,20,12是一种状态,6,10,20,12将是另一种状态。
您可以使用BitConverter
要从4个字节中获取一个整数,请执行以下操作:
int i = BitConverter.ToInt32(new byte[] { player1X, player1Y, player2X, player2Y }, 0);
要从整数中取出四个字节,请执行以下操作:
byte[] fourBytes = BitConverter.GetBytes(i);
为了在32位空间中“压缩”4个8位值,您需要“移位”各个值的位,并将它们相加。
相反的操作是“unshift”,使用一些模来得到你需要的单个数字。
这里有一个变式:
使用定义的填充创建结构。 曝光:
搞定了。
您可以很容易地访问和使用它们,而不需要比特转换器等,并且永远不必定义数组,这是昂贵的jsut扔掉它。