//将BCD码转换成数字字符
/// <summary>
/// 将BCD码转换成数字字符
/// </summary>
/// <param name="bCode">BCD数组</param>
/// <returns></returns>
private string BCD2String(byte[] bCode, int startIndex, int length)
{
string result = "";
for (int i = startIndex; i < startIndex + length; i++)
{
result += Convert.ToString(bCode[i], 16).PadLeft(2, '0');
}
result = result.TrimEnd('A').TrimEnd('a');
return result.TrimEnd('F').TrimEnd('f');
}
//将数字字符串转换成BCD编码
/// <summary>
/// 将数字字符串转换成BCD编码
/// </summary>
/// <param name="str">输入字符串</param>
/// <returns></returns>
public byte[] String2BCD(string s, int length)
{
if (length < 0) return null;
if (string.IsNullOrEmpty(s)) return new byte[0];
byte[] data = new byte[length];
for (int i = 0; i < length; i++)
{
if (i * 2 < s.Length)
{
if (i * 2 + 1 < s.Length)
{
data[i] = (byte)(((s[i * 2] - 48) << 4) + (s[i * 2 + 1] - 48));
}
else
{
data[i] = (byte)(((s[i * 2] - 48) << 4) + 0x0A);
}
}
else
{
data[i] = 0xAA;
}
}
return data;
}
|