4

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

理想情况下,我想要类似的东西:

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

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

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

4

3 回答 3

4

尝试这个:

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

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

于 2010-07-11T09:33:48.250 回答
1

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

    unsafe
    {
        byte* igm = stackalloc byte[8];
        int* intPtr = (int*)igm;
        intPtr[1] = 4283;
    }
于 2010-07-11T09:25:33.190 回答
0

您需要将 int 分解sizeof(int)为字节数,然后在指定索引处手动将此部分设置为您的 byte*。

这将更安全,因为您将知道您将数据放在什么位置和位置。

于 2010-07-11T09:28:24.400 回答