【发布时间】:2010-09-09 14:02:04
【问题描述】:
我正在为嵌入式设备编写 C 固件程序。我想通过串口发送一组十六进制字符值。有没有一种简单的方法可以将值转换为 ASCII 十六进制?
例如,如果数组包含 0xFF,我想发送 ASCII 字符串“FF”,或者对于 0x3B 的十六进制值,我想发送“3B”。
这通常是如何完成的?
我已经有了串行发送功能,所以我可以这样做......
char msg[] = "Send this message";
SendString(msg);
SendString 函数为传入数组中的每个元素调用此函数:
// This function sends out a single character over the UART
int SendU( int c)
{
while(U1STAbits.UTXBF);
U1TXREG = c;
return c;
}
我正在寻找一个可以让我这样做的功能......
char HexArray[5] = {0x4D, 0xFF, 0xE3, 0xAA, 0xC4};
SendHexArray(HexArray);
//Output "4D, FF, E3, AA, C4"
【问题讨论】:
-
你需要传递一个计数给
SendHexArray()或者有一个终止符,否则函数无法知道数组有多长(或者,当然,数组总是 5 个元素长)。