求将c#转为vb.net

isage2002 2017-08-08 09:00:06
private static unsafe uint test(void* pVoid0, uint uint0)
{
if (BitConverter.IsLittleEndian)
{
return *(((uint*) pVoid0));
}
byte* numPtr = (byte*) pVoid0;
switch (uint0)
{
case 1:
return numPtr[0];

case 2:
return (uint) (numPtr[0] | (numPtr[1] << 8));

case 3:
return (uint) ((numPtr[0] | (numPtr[1] << 8)) | (numPtr[2] << 0x10));

case 4:
return (uint) (((numPtr[0] | (numPtr[1] << 8)) | (numPtr[2] << 0x10)) | (numPtr[3] << 0x18));
}
return 0;
}
因对于指针不是很了解,此段代码该如何转换
...全文
489 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
清晨曦月 2017-09-04
  • 打赏
  • 举报
回复
C#可以用指针,只要“允许不安全代码”即可。 看看代码思路就容易写多了,这段程序是用来处理不同字节序的CPU的32位数据的,都处理成小字节序,就是x86构架这种。如果当前就是小字节序,则从指针地址读出实际数据并返回;如果是高字节序,则进行按字节倒序之后返回。所以用VB.NET重写一下就可以了。 PS:VB.NET读写指针数据用System.Runtime.InteropServices.Marshal.ReadOOXX。
sunsatan 2017-08-10
  • 打赏
  • 举报
回复
这代码是C#的吗?我不确定C#有指针这个数据类型。楼主的这段代码自动转换是报错的。
threenewbee 2017-08-09
  • 打赏
  • 举报
回复
指针的代码,可以用数组代替,移位的代码,可以用乘以/除以2的n次方代替。
isage2002 2017-08-09
  • 打赏
  • 举报
回复
转换之后,代码出错 Private Shared Function test(pVoid0 As Pointer(Of System.Void), uint0 As UInteger) As UInteger
zj_zwl 2017-08-09
  • 打赏
  • 举报
回复
http://converter.telerik.com/ 试试看

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧