Zax*_*ter 1 c linux serial-port
我正逐字节地从UART读取数据.这将保存到char.起始字节后面的字节给出了传入的子句字节数(以十六进制表示).我需要将此十六进制数转换为整数,以保持读取所需的字节数.
现在我只是对int进行类型转换.这是我的代码:
char ch;
int bytes_to_read;
while(1){
serial_read(UART_RX, &ch, sizeof(char));
if(/*2nd byte*/){
bytes_to_read = (int)ch;
}
}
Run Code Online (Sandbox Code Playgroud)
我读到了关于strtol()的内容,但它将char数组作为输入.这样做的正确方法是什么?
您的问题不清楚,但假设这ch是一个表示字节数的十六进制字符,那么您可以使用一个简单的函数将十六进制转换为int,例如
int hex2int(char ch)
{
if (ch >= '0' && ch <= '9')
return ch - '0';
if (ch >= 'A' && ch <= 'F')
return ch - 'A' + 10;
if (ch >= 'a' && ch <= 'f')
return ch - 'a' + 10;
return -1;
}
Run Code Online (Sandbox Code Playgroud)
然后:
bytes_to_read = hex2int(ch);
Run Code Online (Sandbox Code Playgroud)
ch它实际上只是一个原始值(即不是十六进制字符),那么您现有的方法应该没问题:
bytes_to_read = (int)ch;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10346 次 |
| 最近记录: |