如何将 int 设置为 byte* C#
如何在 byte* 中的某个索引处将 int 转换为 byte*?
理想情况下,我希望有类似的内容:
unsafe{
byte* igm=stackalloc byte[8];
igm[4]=4283;
}
它将位的第一部分设置为 igm[4],其余部分设置为 igm[5]。
编辑:我意识到可能有很多可能的方法来处理这个问题,我正在寻找最有效的方法(如果可能的话)。
How can I convert an int to a byte* at a certain index in a byte*?
Ideally I would like to have something like:
unsafe{
byte* igm=stackalloc byte[8];
igm[4]=4283;
}
It would set the first part of the bit to igm[4] and the rest into igm[5].
Edit: I realize there may be a lot of possible ways to handle this, i am looking for the most efficient way if possible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试一下:
一旦您意识到可以使用简单的指针算术来索引字节数组中的任何位置,事情就会变得容易得多。
try this:
Once you realize that you can use simple pointer arithmetic to index anywhere in your byte array, things get a LOT easier.
您可能已经注意到,C# 中的类型系统将阻止您这样做。但是,您可以将指针转换为适当的类型:
The type system in C# will prevent you from doing that, as you might have noticed. However, you can cast your pointers to be the appropiate types:
您需要将 int 分解为
sizeof(int)
字节数,然后在指定索引处手动将这部分设置为您的 byte* 。这会更安全,因为您会知道数据的内容和位置。
You need to break your int to
sizeof(int)
count of bytes and then manually set this parts to your byte* at specified indexes.This will be safer as you'll know WHAT and WHERE you place your data.