gpt4 book ai didi

c - 用于在 C 中将 4 个十六进制字符转换为整数的小片段

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:42 27 4
gpt4 key购买 nike

我需要将四个十六进制字符的字符串解析为一个整数。这些字符出现在一个较长的字符串中,并且没有分隔符——我只知道可以找到它们的偏移量。十六进制字符不区分大小写。偏移量为 3 的示例:

"foo10a4bar" -> 4260

我正在寻找一个片段是

  • 简短(过多的代码总是会造成复杂性)
  • 简单(易于理解并验证其正确性)
  • 安全(检测到无效输入并发出信号,没有潜在的内存问题)

我对为此使用“sscanf”函数系列持谨慎态度,但如果有使用它们的安全 ANSI C 解决方案,则可以使用它们。

最佳答案

strtol 很简单,错误处理也很好:

const int OFFSET = 3, LEN = 4;
char hex[LEN + 1];
int i;
for(i = 0; i < LEN && str[OFFSET + i]; i++)
{
hex[i] = str[OFFSET + i];
if(!isxdigit((unsigned char) hex[i]))
{
// signal error, return
}
}
if(i != LEN)
{
// signal error, return
}
hex[LEN] = '\0';
char *end;
int result = (int) strtol(hex, &end, 16);
if(end != hex + LEN)
{
// signal error, return
}

关于c - 用于在 C 中将 4 个十六进制字符转换为整数的小片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3683044/

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