十六进制字符串转ascii码字符串,各位大神有会的,求解答          刚接触蓝牙,做得真烦啊,和硬件交流不说,蓝牙回复的数据也要来回转换,现在就卡在这了,,,

解决方案 »

  1.   

    找张ASCII码表,观察下各个数字、字母ASCII码值与字符本身的联系char szSSDest[] = "0001090A0a0F0f";
        char szSrc[10] = {0};
        szSrc[0] = 0x00;
        szSrc[1] = 0x01;
        szSrc[2] = 0x09;
        szSrc[3] = 0x0A;
        szSrc[4] = 0x0a;
        szSrc[5] = 0x0F;
        szSrc[6] = 0x0f;
        
        char cNum = '0';
        char cChar = 'A' - 0x0A;
        char cLittle = 'a' - 0x0a;
        char szDest[20] = {0};
        szDest[0] = ((szSrc[0] >> 4) & 0x0F) + cNum;
        szDest[1] = (szSrc[0] & 0x0F) + cNum;
        
        
        szDest[2] = ((szSrc[1] >> 4) & 0x0F) + cNum;
        szDest[3] = (szSrc[1] & 0x0F) + cNum;
        
        szDest[4] = ((szSrc[2] >> 4) & 0x0F) + cNum;
        szDest[5] = (szSrc[2] & 0x0F) + cNum;
        
        szDest[6] = ((szSrc[3] >> 4) & 0x0F) + cNum;
        szDest[7] = (szSrc[3] & 0x0F) + cChar;
        
        szDest[8] = ((szSrc[4] >> 4) & 0x0F) + cNum;
        szDest[9] = (szSrc[4] & 0x0F) + cLittle;
        
        szDest[10] = ((szSrc[5] >> 4) & 0x0F) + cNum;
        szDest[11] = (szSrc[5] & 0x0F) + cChar;
        
        szDest[12] = ((szSrc[6] >> 4) & 0x0F) + cNum;
        szDest[13] = (szSrc[6] & 0x0F) + cLittle;
        
        szDest[14] = 0;
        printf("szDest {%s} \r\n", szDest);
        printf("szSSDest {%s} \r\n", szSSDest);