基本上我想做的是
例如:'a' 十六进制等价物是 0x61
,我可以将 61
分成 6
和 1
> 并将它们存储为 '6'
和 '1'
?
缓冲区正在接收这样的数据:
rx_dataframe.data[0] is H'00,'.'// H' is Hex equivalant and '' is ASCII value
rx_dataframe.data[0] is H'31,'1'
rx_dataframe.data[0] is H'32,'2'
rx_dataframe.data[0] is H'33,'3'
我需要将 hex values 0x00,0x31,0x32,0x33
转换为 char value '0','0','3','1','3' ,'2';'3','3'
并将它们存储在 tx_buff_data[];
我希望我的 tx_buff_data
看起来像这样
tx_buff_data[0] have H'30,'0'
tx_buff_data[1] have H'30,'0'
tx_buff_data[2] have H'33,'3'
tx_buff_data[3] have H'31,'1'
tx_buff_data[4] have H'33,'3'
tx_buff_data[5] have H'32,'2'
tx_buff_data[6] have H'33,'3'
tx_buff_data[7] have H'33,'3'
最佳答案
您可以使用按位 AND + 移位将每个字节拆分为两个半字节(4 位数量):
unsigned char lo = byte & 0x0f;
unsigned char hi = (byte >> 4) & 0x0f;
然后,您可以通过数组查找将每一半转换为十六进制字符(因为字符串只是字符数组):
char loChar = "0123456789ABCDEF"[lo];
char hiChar = "0123456789ABCDEF"[hi];
关于c - 如何拆分 ASCII 字符的十六进制字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327211/