gpt4 book ai didi

C# 如何从 IntPtr 获取 Byte[]

转载 作者:IT王子 更新时间:2023-10-29 04:01:51 34 4
gpt4 key购买 nike

我有一个具有委托(delegate)的 .dll(不是我自己的)。这个委托(delegate)回调函数是:
“CallBackFN(ushort opCOde,IntPtr 有效负载,uint 大小,uint localIP)”

如何将 IntPtr 转换为 Byte[]?我认为 payload 实际上是 Byte[]。如果它不是 Byte[] 而是其他东西,我会丢失一些数据吗?

最佳答案

如果是byte[]数组:

 byte[] managedArray = new byte[size];
Marshal.Copy(pnt, managedArray, 0, size);

如果不是byte[],则Marshal.Copy中的size参数是数组元素个数,不是字节大小。所以,如果你有一个 int[] 数组而不是一个 byte[] 数组,你必须除以 4(每个整数的字节数)才能得到正确的要复制的元素,假设通过回调传递的大小参数指的是字节数。

关于C# 如何从 IntPtr 获取 Byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5486938/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com