我收到一个十六进制值
uint8_t length = rx_dataframe.dlc// Current value of this in hex is 0x08
Run Code Online (Sandbox Code Playgroud)
我试图从这个值得到一个char值("8").根据ASCII表,十六进制值"8"是0x38.我试过直接添加"0"但在这里感到困惑
tx_buff_dlc[0]= (rx_dataframe.dlc)+"0";// I know its not currect but just thought
Run Code Online (Sandbox Code Playgroud)
tx_buff_dlc[0]=0x08+0x30将等于0x038并将获得"8"
有人可以解释如何在C中完成十六进制值的添加
"0"表示一个字符串,它具有特定的地址.添加会给你一些内存中的随机位置,这不是你想要的.
相反,使用单引号:'0'.这将编译为字符的任何值'0'(对于ASCII,它是你提到的0x30).然后,添加将按预期工作.