我对将(48)输出((>> 15-i)& 0x0001)的输出添加48的目的感到困惑。
/* Convert fixed 16-bit integer to binary digit string.
Pre num contains integral value to be converted
bitStr is a pointer to variable for bit string
Post bit string stored in str
*/
void bin16 (uint16_t num, char* bitStr) {
for (int i = 0; i < 16; i++)
bitStr[i] = (char) ((num >> 15 - i) & 0x0001) + 48;
return;
}// end of bin16
答案 0 :(得分:2)
bitStr是一个字符串。您需要将整数转换为char以在字符串中放入正确的值。这就是添加48的原因。这相当于添加'0'
。 48是'0'
的ASCII值。
与写这个相似 -
void bin16 (uint16_t num, char* bitStr)
{
for (int i = 0; i < 16; i++)
bitStr[i] = (char) ((num >> 15 - i) & 0x0001) + '0';
return;
}
答案 1 :(得分:2)
48是字符&#39; 0&#39;的ASCII值。在这种情况下,它被用于在0和0之间进行转换。 1和字符&#39; 0&#39; &安培; &#39; 1&#39;
bin16()
也可以写成:
void bin16 (uint16_t num, char *bitStr) {
for (uint16_t i = 0; i < 16; i++)
bitStr[i] = (char) ((num >> 15 - i) & 0x0001) + '0';
}