将字符数组转换为 C 中的十六进制
Converting a character array to be handled as a hex in C
我最近刚被要求使用 C — 我通常使用 Python 和一点 Java — 我 运行 遇到了一些问题。
我创建了一个函数,将以 10 为基数的无符号整数转换为表示等效十六进制的字符数组。现在我需要能够将类型为 uint32_t 的变量设置为此 'hex';我该怎么做才能确保将此 char[] 视为实际的十六进制值?
代码如下:
int DecToHex(long int conversion, char * regParams[])
{
int hold[8];
for (int index = 0; conversion > 0; index++)
{
hold[index] = conversion % 16;
conversion = conversion / 16;
}
int j = 0;
for (int i = 7; i > -1; i--)
{
if (hold[i] < 10 && hold[i] >= 0)
{
regParams[j] = '0' + hold[i];
}
else if (hold[i] > 9 && hold[i] < 16)
{
regParams[j] = '7' + hold[i];
}
else
{
j--;
}
j++;
}
return 0;
}
你应该只使用 snprintf
:
int x = 0xDA8F;
char buf[9];
snprintf(buf, sizeof(buf), "%X", x); // Use %x for lowercase hex digits
要将数字的十六进制表示形式转换为 int
,请使用 strtol
(the third argument to it lets you specify the base), or, since you want to assign it to an unsigned
data type, strtoul
。
代码看起来像这样:
char* HexStr = "8ADF4B";
uint32_t Num = strtoul(HexStr, NULL, 16);
printf("%X\n", Num); // Outputs 8ADF4B
我最近刚被要求使用 C — 我通常使用 Python 和一点 Java — 我 运行 遇到了一些问题。
我创建了一个函数,将以 10 为基数的无符号整数转换为表示等效十六进制的字符数组。现在我需要能够将类型为 uint32_t 的变量设置为此 'hex';我该怎么做才能确保将此 char[] 视为实际的十六进制值?
代码如下:
int DecToHex(long int conversion, char * regParams[])
{
int hold[8];
for (int index = 0; conversion > 0; index++)
{
hold[index] = conversion % 16;
conversion = conversion / 16;
}
int j = 0;
for (int i = 7; i > -1; i--)
{
if (hold[i] < 10 && hold[i] >= 0)
{
regParams[j] = '0' + hold[i];
}
else if (hold[i] > 9 && hold[i] < 16)
{
regParams[j] = '7' + hold[i];
}
else
{
j--;
}
j++;
}
return 0;
}
你应该只使用 snprintf
:
int x = 0xDA8F;
char buf[9];
snprintf(buf, sizeof(buf), "%X", x); // Use %x for lowercase hex digits
要将数字的十六进制表示形式转换为 int
,请使用 strtol
(the third argument to it lets you specify the base), or, since you want to assign it to an unsigned
data type, strtoul
。
代码看起来像这样:
char* HexStr = "8ADF4B";
uint32_t Num = strtoul(HexStr, NULL, 16);
printf("%X\n", Num); // Outputs 8ADF4B