如何在字节*的某个索引处将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打破到生成字节的数字节数,然后在指定的索引上手动将此部分设置为字节*。

这将是更安全的,因为您将知道您放置数据的内容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top