这个函数是自己写的,不知道有误没有,网上找了很多但是都写得怪麻烦的。
希望对大家有所帮助
byteLength是返回字节的长度。
private
static
int GetSum(
int baseInt,
int[] sValue)
{
int count = sValue.Length;
if (count == 1) return sValue[ 0];
int r = 1;
int b = sValue[ 0];
for ( int i = 1; i < count; i++)
{
r *= baseInt;
}
count--;
int[] ri = new int[sValue.Length - 1];
for ( int j = 0; j < ri.Length; j++)
{
ri[j] = sValue[j + 1];
}
return b * r + GetSum(baseInt, ri);
}
public static byte[] BCDEncode( this int intvalue, int byteLength)
{
byte[] r = new byte[byteLength];
char[] chars = intvalue.ToString().ToCharArray();
int clengh = chars.Length;
int[] ints = new int[clengh];
for ( int j = 0; j < clengh; j++)
{
ints[j] = Convert.ToInt32(chars[j].ToString());
}
int rvalue = GetSum( 16, ints);
byte[] sas = BitConverter.GetBytes(rvalue);
byte[] ras = new byte[byteLength];
for ( int k = 0; k < byteLength; k++)
{
ras[byteLength-k- 1] = sas[k];
}
return ras;
}
{
int count = sValue.Length;
if (count == 1) return sValue[ 0];
int r = 1;
int b = sValue[ 0];
for ( int i = 1; i < count; i++)
{
r *= baseInt;
}
count--;
int[] ri = new int[sValue.Length - 1];
for ( int j = 0; j < ri.Length; j++)
{
ri[j] = sValue[j + 1];
}
return b * r + GetSum(baseInt, ri);
}
public static byte[] BCDEncode( this int intvalue, int byteLength)
{
byte[] r = new byte[byteLength];
char[] chars = intvalue.ToString().ToCharArray();
int clengh = chars.Length;
int[] ints = new int[clengh];
for ( int j = 0; j < clengh; j++)
{
ints[j] = Convert.ToInt32(chars[j].ToString());
}
int rvalue = GetSum( 16, ints);
byte[] sas = BitConverter.GetBytes(rvalue);
byte[] ras = new byte[byteLength];
for ( int k = 0; k < byteLength; k++)
{
ras[byteLength-k- 1] = sas[k];
}
return ras;
}