gpt4 book ai didi

c - 十六进制字符到整数的转换

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:20:06 26 4
gpt4 key购买 nike

我正在逐字节地从 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 数组作为输入。执行此操作的正确方法是什么?

最佳答案

您的问题不清楚,但假设 ch 是表示字节数的十六进制字符,那么您可以使用一个简单的函数将十六进制转换为整数,例如

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;
}

然后:

bytes_to_read = hex2int(ch);


但是请注意,如果 ch 实际上只是一个原始值(即不是十六进制字符),那么您现有的方法应该没问题:

bytes_to_read = (int)ch;

关于c - 十六进制字符到整数的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26839558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com