我正在查看由Tibor Kiss创建的简单C函数(下面是链接)。我试图理解如何将单个二进制字节转换为两个十六进制字符涉及添加“W”(0x57)。为什么要这样做呢?
我了解>>通过四个位置向右移动字符c(用0填充左侧位)。我还理解x=c&0x0f部分,只需使用按位AND掩码来过滤掉x的上四位。
我只是不知道为什么将二进制字节转换为十六进制会涉及添加ASCII“W”(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;
}