📄 myfunctions.cs
字号:
}
return ui;
}
public static uint Get3Bytes( byte [] ptr , ref int Index , int Type )
{
uint ui = 0;
if( Type == NORMAL )
{
ui = (uint) ptr[ Index++ ];
ui <<= 16;
ui += ( (uint) ptr[ Index++ ] ) << 8;
ui += (uint) ptr[ Index++ ];
}
return ui;
}
unsafe public static uint Get4Bytes( byte * ptr , int Type )
{
uint ui = 0;
uint * uiptr = ( uint * ) ptr;
if( Type == NORMAL )
{
ui = (uint) *( ptr );
ui <<= 24;
ui += ( (uint) *( ptr + 1 ) ) << 16;
ui += ( (uint) *( ptr + 2 ) ) << 8;
ui += (uint) *( ptr + 3 );
}
else if( Type == VALUE )
{
ui = *( uiptr );
}
return ui;
}
public static uint Get4Bytes( byte [] ptr , ref int Index , int Type )
{
uint ui = 0;
if( Type == NORMAL )
{
ui = (uint) ptr[ Index++ ];
ui <<= 24;
ui += ( (uint) ptr[ Index++ ] ) << 16;
ui += ( (uint) ptr[ Index++ ] ) << 8;
ui += (uint) ptr[ Index++ ];
}
else if( Type == VALUE )
{
ui = (uint) ptr[ Index + 3 ];
ui <<= 24;
ui += ( (uint) ptr[ Index + 2 ] ) << 16;
ui += ( (uint) ptr[ Index + 1 ] ) << 8;
ui += (uint) ptr[ Index ]; Index += 4;
}
return ui;
}
public static void Set4Bytes( ref byte [] ptr , ref int Index , uint NewValue , int Type )
{
//uint ui = NewValue;
//byte b1 , b2 , b3 , b4;
if( Type == NORMAL )
{
ptr[ Index ++ ] = (byte) ( NewValue >> 24 );
ptr[ Index ++ ] = (byte) ( NewValue >> 16 );
ptr[ Index ++ ] = (byte) ( NewValue >> 8 );
ptr[ Index ++ ] = (byte) NewValue ;
/*ui = (uint) ptr[ Index++ ];
ui <<= 24;
ui += ( (uint) ptr[ Index++ ] ) << 16;
ui += ( (uint) ptr[ Index++ ] ) << 8;
ui += (uint) ptr[ Index++ ];*/
}
else if( Type == VALUE )
{
ptr[ Index + 0 ] = (byte) NewValue;
ptr[ Index + 1 ] = (byte) ( NewValue >> 8 );
ptr[ Index + 2 ] = (byte) ( NewValue >> 16 );
ptr[ Index + 3 ] = (byte) ( NewValue >> 24 );
Index += 4;
/*ui = (uint) ptr[ Index + 3 ];
ui <<= 24;
ui += ( (uint) ptr[ Index + 2 ] ) << 16;
ui += ( (uint) ptr[ Index + 1 ] ) << 8;
ui += (uint) ptr[ Index ]; Index += 4;*/
}
//return ui;
}
unsafe public static string GetIpAddress( byte * ptr )
{
byte b = 0;
string str = "";
b = *( ptr );
str += b.ToString() + ".";
b = *( ptr + 1 );
str += b.ToString() + ".";
b = *( ptr + 2 );
str += b.ToString() + ".";
b = *( ptr + 3 );
str += b.ToString();
return str;
}
public static string GetIpAddress( byte [] ptr , ref int Index )
{
string str = "";
str += ptr[ Index++ ].ToString() + ".";
str += ptr[ Index++ ].ToString() + ".";
str += ptr[ Index++ ].ToString() + ".";
str += ptr[ Index++ ].ToString();
return str;
}
public static string GetIpAddress( byte [] ptr , ref int Index , int Length )
{
string str = "";
int i = 0;
for( i = 0; i < Length - 1; i ++ )
str += ptr[ Index++ ].ToString() + ".";
str += ptr[ Index++ ].ToString();
return str;
}
public static int MakeFont( int Handle ) {
int iFontSize = 10;
int hFont = 0;
int CurrentFont = 0;
int hdc = GetDC( Handle );
int nHeight = -MulDiv( iFontSize, GetDeviceCaps(hdc, LOGPIXELSY), 72 ); //72);
ReleaseDC( Handle , hdc );
int cset;
cset = ANSI_CHARSET;
CurrentFont = SendMessage( Handle , WM_GETFONT , 0 , 0 );
hFont = CreateFont( nHeight,0,0,0,700,0,0,0,(uint)cset,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH | FF_DONTCARE,0);
SendMessage( Handle , WM_SETFONT , hFont , 0x00010000 );
if( CurrentFont > 0 )
DeleteObject( CurrentFont );
return 1;
}
private static string PadZeros( int inInt )
{
StringBuilder TextField = new StringBuilder();
string hex = Convert.ToString( inInt , 16 );
if( hex.Length < 8 )
{
int ix = 8-hex.Length;
for( int i = 0; i < ix; ++i )
{
TextField.Append( "0" );
}
}
TextField.Append( hex );
return TextField.ToString().ToUpper();
}
private static string ConvertByteToHexString( byte inByte )
{
StringBuilder TextField = new StringBuilder();
string hex = Convert.ToString( inByte , 16 );
if( hex.Length == 1 )
TextField.Append( "0" );
TextField.Append( hex );
return TextField.ToString().ToLower();
}
public static string GetHexString( byte [] mData )
{
StringBuilder HexField = new StringBuilder();
StringBuilder TextField = new StringBuilder();
string HeaderStr = "";
string HeaderStr2 = "";
byte [] Data;
int i = 0;
int newrow = 0;
int global = 0;
//int forth = 0;
string hex = " ";
string numb = " ";
string Tmp = "";
int LastRow = mData.GetLength(0) / 16;
int RemainingBytes = ( LastRow * 16 ) - mData.GetLength(0);
if( RemainingBytes < 0 )
{
LastRow++;
RemainingBytes += 16;
}
Data = new byte[ LastRow * 16 ];
for (i = 0; i < mData.Length; ++i )
{
Data[i] = mData[i];
}
HeaderStr = " Offset ";
HeaderStr2 = " ---------";
for( i = 0; i < 16; i ++ )
{
HeaderStr += " " + i.ToString("d02");
HeaderStr2 += "---";
}
HexField.Append( HeaderStr + " \n" );
HexField.Append( HeaderStr2 + "-------------------\n" );
for (i = 0; i < Data.Length; ++i )
{
if( newrow == 0 )
{
numb = PadZeros( global );
HexField.Append( " " + numb + " " );
//HexField.Append( " " + numb + "-" );
global += 16;
}
hex = ConvertByteToHexString( Data[i] );
/*if( forth == 3 )
{
HexField.Append( " " + hex + " -" ); // 3 characters
forth = 0;
}
else
{
HexField.Append( " " + hex ); // 3 characters
forth++;
}*/
HexField.Append( " " + hex ); // 3 characters
int g = Data[i];
if( g > 31 && g < 127 )
{
TextField.Append( (char) Data[i] );
}
else
{
TextField.Append( "." );
}
++newrow;
if( newrow >= 16 )
{
HexField.Append( " " + TextField.ToString() + "\n" );
TextField = new StringBuilder(); // clear
newrow = 0; // reset
}
}
HexField.Append( "\n\n" );
Tmp = HexField.ToString();
return Tmp;
}
public static string ReFormatString( object Value , object AdditionalValue )
{
string tmp = Value.GetType().ToString();
string ret = "", Ad = "";
byte b = 0;
ushort u = 0;
short s = 0;
uint ui = 0;
int i = 0;
ulong ul = 0;
long l = 0;
if( AdditionalValue != null )
Ad = (string) AdditionalValue;
if( tmp == "System.Byte" )
{
b = (byte) Value;
ret = " 0x" + b.ToString("x02") + "( " + b.ToString() + " ) ";
}
else if( tmp == "System.UInt16" )
{
u = (ushort) Value;
ret = " 0x" + u.ToString("x04") + "( " + u.ToString() + " ) ";
}
else if( tmp == "System.Int16" )
{
s = (short) Value;
ret = " 0x" + s.ToString("x04") + "( " + s.ToString() + " ) ";
}
else if( tmp == "System.UInt32" )
{
ui = (uint) Value;
ret = " 0x" + ui.ToString("x08") + "( " + ui.ToString() + " ) ";
}
else if( tmp == "System.Int32" )
{
i = (int) Value;
ret = " 0x" + i.ToString("x08") + "( " + i.ToString() + " ) ";
}
else if( tmp == "System.UInt64" )
{
ul = (ulong) Value;
ret = " 0x" + ul.ToString("x16") + "( " + ul.ToString() + " ) ";
}
else if( tmp == "System.Int64" )
{
l = (long) Value;
ret = " 0x" + l.ToString("x16") + "( " + l.ToString() + " ) ";
}
if( Ad != "" )
ret += Ad;
return ret;
}
public static string GetObjectType( object o )
{
string tmp = o.GetType().ToString();
int pluspos = tmp.IndexOf( "+" );
if( pluspos >= 0 )
tmp = tmp.Substring( pluspos + 1 , tmp.Length - pluspos - 1 );
return tmp;
}
public static string GetNetBiosName( byte [] Data , ref int Index , ref byte NameNumber )
{
string Tmp = "";
byte b1 = 0, b2 = 0;
int i = 0;
while( Data[ Index ] == 0 ) Index ++;
for( i = 0; i < 15; i ++ )
{
b1 = Data[ Index ++ ]; b2 = Data[ Index ++ ];
b1 &= 0x0f; b2 &= 0x0f;
b1 <<= 4; b1 += b2; b1 -= 17;
Tmp += (char) b1;
}
Tmp = Tmp.Trim();
b1 = Data[ Index ++ ]; b2 = Data[ Index ++ ];
b1 &= 0x0f; b2 &= 0x0f;
b1 <<= 4; b1 += b2; b1 -= 17;
Tmp += "<" + b1.ToString("x02") + ":" + b1.ToString() + ">";
Index ++;
NameNumber = b1;
return Tmp;
}
public static string GetNetBiosNameSerial( byte [] Data , ref int Index , ref byte NameNumber )
{
string Tmp = "";
byte b1 = 0;
int i = 0;
while( Data[ Index ] == 0 ) Index ++;
for( i = 0; i < 15; i ++ )
{
Tmp += (char) Data[ Index ++ ];
}
Tmp = Tmp.Trim();
b1 = Data[ Index ++ ];
Tmp += "<" + b1.ToString("x02") + ":" + b1.ToString() + ">";
NameNumber = b1;
return Tmp;
}
public static string DecodeBitField( byte Value , uint Mask , string TrueText , string FalseText )
{
byte [] MyArray;
int GroupLength = 0;
byte b = 0, mb = 0, tb = 0;
string ExpStr = "";
string ReturnStr = "";
int iii = 0, k = 0;
GroupLength = 2;
b = Value;
mb = (byte) Mask;
MyArray = new byte[ GroupLength * 4 ];
for( iii = 0; iii < MyArray.GetLength(0); iii ++ )
MyArray[ iii ] = 46;
if( ( b & mb ) > 0 ) ExpStr = TrueText;
else ExpStr = FalseText;
iii = 0;
tb = mb;
while( tb > 0 ) { iii ++; tb >>= 1; }
MyArray[ MyArray.GetLength(0) - iii ] = ( b & mb ) > 0 ? (byte) 49 : (byte) 48;
k = 0;
ReturnStr = "";
for( iii = 0; iii < MyArray.GetLength(0); iii ++ )
{
if( k == 3 )
{
ReturnStr += (char) MyArray[ iii ] + " ";
k = 0;
}
else
{
ReturnStr += (char) MyArray[ iii ];
k ++;
}
}
ReturnStr += "= " + ExpStr;
return ReturnStr;
}
public static string DecodeBitField( byte Value , int Mask , string TrueText , string FalseText )
{
return DecodeBitField( Value , (uint) Mask , TrueText , FalseText );
}
public static string DecodeBitField( ushort Value , uint Mask , string TrueText , string FalseText )
{
byte [] MyArray;
int GroupLength = 0;
ushort b = 0, mb = 0, tb = 0;
string ExpStr = "";
string ReturnStr = "";
int iii = 0, k = 0;
GroupLength = 4;
b = Value;
mb = (ushort) Mask;
MyArray = new byte[ GroupLength * 4 ];
for( iii = 0; iii < MyArray.GetLength(0); iii ++ )
MyArray[ iii ] = 46;
if( ( b & mb ) > 0 ) ExpStr = TrueText;
else ExpStr = FalseText;
iii = 0;
tb = mb;
while( tb != 0 ) { iii ++; tb >>= 1; }
MyArray[ MyArray.GetLength(0) - iii ] = ( b & mb ) > 0 ? (byte) 49 : (byte) 48;
k = 0;
ReturnStr = "";
for( iii = 0; iii < MyArray.GetLength(0); iii ++ )
{
if( k == 3 )
{
ReturnStr += (char) MyArray[ iii ] + " ";
k = 0;
}
else
{
ReturnStr += (char) MyArray[ iii ];
k ++;
}
}
ReturnStr += "= " + ExpStr;
return ReturnStr;
}
public static string DecodeBitField( short Value , uint Mask , string TrueText , string FalseText )
{
return DecodeBitField( (ushort) Value , Mask , TrueText , FalseText );
}
public static string DecodeBitField( short Value , int Mask , string TrueText , string FalseText )
{
return DecodeBitField( (ushort) Value , (uint) Mask , TrueText , FalseText );
}
public static string DecodeBitField( ushort Value , int Mask , string TrueText , string FalseText )
{
return DecodeBitField( Value , (uint) Mask , TrueText , FalseText );
}
public static string DecodeBitField( uint Value , uint Mask , string TrueText , string FalseText )
{
byte [] MyArray;
int GroupLength = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -