在 C 代码中将 char 数组元素转换为等效的十六进制

Convert char array elements into Hexadecimal equivalent in C code

我目前正尝试在 C 代码中创建一个自定义函数,它将采用一个无符号字符数组,如:array[] = "11000000111111111000000010000000" 作为输入并将其转换为 0xC0FF8080 并将其存储回数组或只需将 printf 打印到控制台即可。任何帮助消除我对此的困惑的帮助将不胜感激。谢谢!

迭代字符串,每次迭代将结果向左移动并将最右边的位设置为适当的值:

#include <stdio.h>
#include <string.h>

int main(void)
{
    char const array[] = "11000000111111111000000010000000";
    size_t const length = strlen(array);

    unsigned long long n = 0ULL;
    for (size_t idx = 0U; idx < length; ++idx)
    {
        n <<= 1U;
        n |= array[idx] == '0' ? 0U : 1U;
        // n |= array[idx] - '0'; // An alternative to the previous line
    }

    printf("%#llx\n", n);
}

这里使用了一个(有符号的)char数组,但是方法是一样的。

将结果存储回 char 数组:

#include <stdio.h>
#include <string.h>

int main(void)
{
    char array[] = "11000000111111111000000010000000";
    size_t length = strlen(array);

    for (size_t idx = 0U; idx < length; ++idx)
        array[idx] = array[idx] - '0';

    for (size_t idx = 0U; idx < length; ++idx)
        printf("%d", array[idx]);
    putchar('\n');
}

请注意,此处 char 类型将包含十进制值 01