2019年11月19日
BCD码转10进制字符串(C#、C++)
C#
/// <summary>
/// 将bcd字节数组转为10进制字符串
/// </summary>
/// <param name="bcd">bcd码字节数组</param>
/// <returns>返回转换后的10进制字符串</returns>
public string BCDCodeToDecimalString(byte[] bcd)
{
StringBuilder sb = new StringBuilder();
for (int i=0; i<bcd.Length; i++)
{
sb.Append(ConvertBCDToInt(bcd[i]));
}
return sb.ToString();
}
/// <summary>
/// 将BCD一字节数据转换到byte 十进制数据
/// </summary>
/// <param name="b" />字节数
/// <returns>返回转换后的BCD码</returns>
public static byte ConvertBCDToInt(byte b)
{
//高四位
byte b1 = (byte)((b >> 4) & 0xF);
//低四位
byte b2 = (byte)(b & 0xF);
return (byte)(b1 * 10 + b2);
}
C++
void BCDCodeToDecimalString(unsigned char x[],int len,char* y)
{
for(int i(0);i<len;i++)
{
if(x[i]>=0x00&&x[i]<=0x0F)
{
y[i*2] = '0';
sprintf((y+i*2+1),"%x",x[i]);
}
else
{
sprintf((y+i*2),"%x",x[i]);
}
}
}