【发布时间】:2014-11-10 08:27:56
【问题描述】:
我正在逐字节地从 UART 读取数据。这被保存到一个字符。 起始字节后面的字节给出了随后传入的字节数(作为十六进制)。我需要将此十六进制数转换为整数,以保持需要读取的字节数。
目前我只是将类型转换为 int。这是我的代码:
char ch;
int bytes_to_read;
while(1){
serial_read(UART_RX, &ch, sizeof(char));
if(/*2nd byte*/){
bytes_to_read = (int)ch;
}
}
我阅读了有关 strtol() 的信息,但它需要 char 数组作为输入。这样做的正确方法是什么?
【问题讨论】:
-
你能举个例子吗?字节中的十六进制数是如何编码的?
-
“作为十六进制”是否意味着它以十六进制表示的文本形式出现?我问是因为这里的许多人似乎在说“二进制”时说“十六进制”,即作为原始字节。
-
你要转换哪个十六进制数?说清楚
-
@user3490458:在这种情况下,您的代码已经在做正确的事情,即将
char转换为int- 那么实际问题是什么? -
@user3490458 你得到这个
0x03真的是4个字符0、x、0和3还是一个字节的表示0x03和值 3?确保你清楚价值和代表的区别。
标签: c linux serial-port