Je me penche sur une simple fonction C créée par Tibor Kiss (lien ci-dessous). J'essaie de comprendre comment la conversion d'un seul octet binaire en deux caractères hexadécimaux implique l'ajout de "W" (0x57). Pourquoi cela se fait-il ?
Je comprends que >> décale le caractère c vers la droite de quatre places (en remplissant les bits de gauche par des 0). Je comprends également la partie x=c&0x0f qui masque simplement les quatre bits supérieurs de x à l'aide d'un ET bit à bit.
Je ne comprends pas pourquoi la conversion d'un octet binaire en hexadécimal implique l'ajout d'un "W" ASCII (0x57).
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en543105
/******************************************************************************
* Function: void btoh(unsigned char c,char *str)
*
* PreCondition: None
*
* Input: str - pointer to the zero terminated string
* c - byte to convert
*
* Output: None
*
* Side Effects: None
*
* Overview: Convert one byte to a 2 character length hexadecimal
* zero terminated string
*
* Note: Using static variable for less code size
*****************************************************************************/
void btoh(unsigned char c,char *str)
{
static unsigned char x;
x=c>>4;
*str=x+(x>9?'W':'0');
x=c&0x0f;
str[1]=x+(x>9?'W':'0');
str[2]=0;
}