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]);
        }
    }
}