如何在字节*中的某个索引处将 int 转换为字节*?
理想情况下,我想要类似的东西:
unsafe{
byte* igm=stackalloc byte[8];
igm[4]=4283;
}
它将位的第一部分设置为 igm[4],其余部分设置为 igm[5]。
编辑:我意识到可能有很多可能的方法来处理这个问题,如果可能的话,我正在寻找最有效的方法。
如何在字节*中的某个索引处将 int 转换为字节*?
理想情况下,我想要类似的东西:
unsafe{
byte* igm=stackalloc byte[8];
igm[4]=4283;
}
它将位的第一部分设置为 igm[4],其余部分设置为 igm[5]。
编辑:我意识到可能有很多可能的方法来处理这个问题,如果可能的话,我正在寻找最有效的方法。
尝试这个:
unsafe
{
byte* igm = stackalloc byte[8];
*(int*)(igm + 4) = 4283;
}
一旦意识到可以使用简单的指针算法来索引字节数组中的任何位置,事情就会变得容易得多。
正如您可能已经注意到的,C# 中的类型系统会阻止您这样做。但是,您可以将指针转换为适当的类型:
unsafe
{
byte* igm = stackalloc byte[8];
int* intPtr = (int*)igm;
intPtr[1] = 4283;
}
您需要将 int 分解sizeof(int)
为字节数,然后在指定索引处手动将此部分设置为您的 byte*。
这将更安全,因为您将知道您将数据放在什么位置和位置。