代码之家  ›  专栏  ›  技术社区  ›  T. Stone

如何将int设置为byte*C#

  •  4
  • T. Stone  · 技术社区  · 14 年前

    如何将int转换为byte*中某个索引处的byte*?

    unsafe{
        byte* igm=stackalloc byte[8];
        igm[4]=4283;
    }
    

    它会将位的第一部分设置为igm[4],其余部分设置为igm[5]。

    编辑:我意识到有很多可能的方法来处理这个问题,如果可能的话,我正在寻找最有效的方法。

    3 回复  |  直到 14 年前
        1
  •  4
  •   Erik van Brakel scottrakes    14 年前

    unsafe
    {
        byte* igm = stackalloc byte[8];
        *(int*)(igm + 4) = 4283;
    }
    

    一旦您意识到可以使用简单的指针算法来索引字节数组中的任何位置,事情就变得简单多了。

        2
  •  1
  •   driis    14 年前

    正如您可能已经注意到的那样,C#中的类型系统将阻止您这样做。但是,您可以将指针转换为适当的类型:

        unsafe
        {
            byte* igm = stackalloc byte[8];
            int* intPtr = (int*)igm;
            intPtr[1] = 4283;
        }
    
        3
  •  0
  •   Eugene Cheverda    14 年前

    你得把你的int改成 sizeof(int)