如何将int设置为字节* c#
-
13-09-2020 - |
题
如何在字节*的某个索引处将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打破到生成字节的数字节数,然后在指定的索引上手动将此部分设置为字节*。
这将是更安全的,因为您将知道您放置数据的内容。
不隶属于 StackOverflow