bcd-ascii相互轉換函數


// BCD轉ASCII

int Asc2Bcd(unsigned char *input, unsigned int inputLen, unsigned char *output)

{

    unsigned char temp;
    unsigned int i;

    if (input == NULL || output == NULL) {
        return -1;
    }

    for (i = 0; i < inputLen; i += 2) {
        temp = input[i];
        if (temp > '9') {
            temp = (unsigned char)toupper((unsigned char)temp) - 'A' + 0x0A;
        } else {
            temp &= 0x0F;
        }
        output[i / 2] = temp << 4;

        temp = input[i+1];
        if (temp > '9') {
            temp = (unsigned char)toupper((unsigned char)temp) - 'A' + 0x0A;
        } else {
            temp &= 0x0F;
        }
        output[i/2] |= temp;
    }

    return 0;

}

// ASCII轉BCD

int Bcd2Asc(unsigned char *input, unsigned int inputLen, unsigned char *output)

{

    const unsigned char ascii[] = "0123456789ABCDEF";
    unsigned int i;

    if (input == NULL || output == NULL) {
        return –1;

    }

    for (i = 0; i < inputLen; i++)
    {
        output[2 * i]   = ascii[(input[i] >> 4)];
        output[2 * i + 1] = ascii[(input[i] & 0x0F)];
    }

    return 0;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM