有没有办法转换它:
function (const uint8* ptra, long src)
{
const uint8* ptrb = ptra + src;
}
我尝试将每个const uint *转换为byte [],但我不确定如何处理ptra + src。 感谢
答案 0 :(得分:1)
一种方法是使用包含a_and_b元素的单个数组
void SomeMethod(byte[] array, long offsetForBPart)
{
//TODO is array big enough?
var b0 = array[0+offsetForBPart];
var b1 = array[1+offsetForBPart];
var b2 = array[2+offsetForBPart];
//You get the idea;
}
答案 1 :(得分:1)
在C#中,这通常不是最好的方法,但它确实特别回答了你的问题。您可以使用unsafe
和fixed
关键字,如下所示:
public unsafe void DoSomething(byte[] data, long src)
{
fixed (byte* ptra = data)
{
byte* ptrb = ptra + src;
// do your work... e.g.
// ptrb[0] = 10;
// ...is equivalent to...
// data[src] = 10;
}
}
要使用此方法,您必须将代码编译为“不安全”。如果您正在使用Visual Studio,则可以在“解决方案资源管理器”中右键单击项目节点,然后选择“属性”。在属性页面的“构建”选项卡下,选中“允许不安全的代码”#39;框。