在 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
类型将包含十进制值 0
和 1
。
我目前正尝试在 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
类型将包含十进制值 0
和 1
。