c#内存读写方法
代码如下
usingSystem.Runtime.InteropServices;
usingSystem.Text;
publicclassFunction
{
//C#操作内存读写方法
publicstaticbytePtrToByte(intPtr )
{
byteb = Marshal.ReadByte( ( IntPtr ) Ptr );
returnb;
}
publicstaticcharPtrToChar(intPtr )
{
byteb = Marshal.ReadByte( ( IntPtr ) Ptr );
return(char) b;
}
publicstaticshortPtrToShort(intPtr )
{
shortb = Marshal.ReadInt16( ( IntPtr ) Ptr );
returnb;
}
//C#操作内存读写方法
publicstaticushortPtrToUShort(intPtr )
{
ushortb = (ushort) Marshal.ReadInt16( ( IntPtr ) Ptr );
returnb;
}
publicstaticintPtrToInt(intPtr )
{
intb = Marshal.ReadInt32( ( IntPtr ) Ptr );
returnb;
}
publicstaticuintPtrToUInt(intPtr )
{
uintb = (uint) Marshal.ReadInt32( ( IntPtr ) Ptr );
returnb;
}
publicstaticlongPtrToLong(intPtr )
{
longb = Marshal.ReadInt64( ( IntPtr ) Ptr );
returnb;
} //C#操作内存读写方法
publicstaticulongPtrToULong(intPtr )
{
ulongb = (ulong) Marshal.ReadInt64( ( IntPtr ) Ptr );
returnb;
}
// Convert an ip address stored an address to equivalent string value
publicstaticstringGetPtrToIpAddr(intintPtr,intvarlen)
{
inti = 0;
StringBuilder sb =newStringBuilder(0,varlen*4);
byte[] byx =newbyte[varlen];
// ip address cann't have zero value C#操作内存读写方法
// ip address cann't have zero length C#操作内存读写方法
if( ( intPtr == 0 ) || ( varlen == 0 ) )return"";
Marshal.Copy( ( IntPtr ) intPtr , byx , 0 , varlen );
for( i = 0; i < varlen - 1; i ++ )
{
sb.Append(byx[i]);
sb.Append('.');
}
sb.Append(byx[varlen - 1]);
returnsb.ToString();
}
}
免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
新励学网教育平台
海量全面 · 详细解读 · 快捷可靠
累积科普文章数:18,862,126篇