C语言 如何将一个字符串形式16进制,转为16进制数字?具体如下
每两位字符转换为整数,再转换为16进制
unsigned char str[9] = "55000000";
unsigned char strResult[4];
for(int i=0;i<4;i++)
{
if(str[i*2] >='A' && str[i*2] <='Z')
strResult[i] = str[i*2] - 'A';
else
strResult[i] = str[i*2] - '0';
if(str[i*2+1] >='A' && str[i*2+1] <='Z')
strResult[i] = strResult[i] * 16 + str[i*2] - 'A';
else
strResult[i] = strResult[i] * 16 + str[i*2] - '0';
}
参考一下ChatGPT示例代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
unsigned char star[9] = {"55000000"};
unsigned char strResult[4] = {0};
int i;
for (i = 0; i < 8; i+=2)
{
char str[3] = {0};
str[0] = star[i];
str[1] = star[i+1];
strResult[i/2] = strtol(str, NULL, 16);
}
printf("The result is : \n");
for (i = 0; i < 4; i++)
printf("0x%02x ", strResult[i]);
printf("\n");
return 0;
}
输出结果:
0x55 0x00 0x00 0x00