gpt4 book ai didi

使用 sscanf 将长十六进制字符串转换为 int 数组

转载 作者:行者123 更新时间:2023-12-04 10:32:09 25 4
gpt4 key购买 nike

我有这样的输入

char *input="00112233FFAA";
uint8_t output[6];

使用 sscanfinput 转换为 output 的最简单方法是什么? (最好是没有循环的 1 行)我想到的解决方案不会扩展到 20+ 十六进制字符串。

sscanf(input, "%x%x%x%x%x",output[0], output[1]....output[5]);

最佳答案

如果这可以很容易地用手写,为什么要 scanf:

const size_t numdigits = strlen(input) / 2;

uint8_t * const output = malloc(numdigits);

for (size_t i = 0; i != numdigits; ++i)
{
output[i] = 16 * toInt(input[2*i]) + toInt(intput[2*i+1]);
}

unsigned int toInt(char c)
{
if (c >= '0' && c <= '9') return c - '0';
if (c >= 'A' && c <= 'F') return 10 + c - 'A';
if (c >= 'a' && c <= 'f') return 10 + c - 'a';
return -1;
}

关于使用 sscanf 将长十六进制字符串转换为 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8197838/

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