我有以下 C 字符串
"72e4247d3c91f424c62d909d7c1553a5"
它由 32 个十六进制数字组成。它是一个包含 4 个十六进制整数的数组。如何从这个数组中取回整数形式的数字?
我有以下 C 字符串
"72e4247d3c91f424c62d909d7c1553a5"
它由 32 个十六进制数字组成。它是一个包含 4 个十六进制整数的数组。如何从这个数组中取回整数形式的数字?
您必须分别解析四个 32 位/8 十六进制数字块。最简单的方法是
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
void parse_hex4(char const *str, uint32_t num[4])
{
char buf[9]; // 8 hex digits + NUL
buf[8] = '\0';
for (int i=0; i<4; i++) {
memcpy(buf, str + i * 8, 8);
num[i] = strtoul(buf, NULL, 16);
}
}
这假设补str
零正好是 32 个字符长,并且它不进行输入验证。如果您使用的是卡在 1980 中的Redmond 编译器,请使用unsigned long
而不是uint32_t
.
你试过strtol
吗?
int val = (int) strtol (hex_string, NULL, 16);
如果它是扁平数组,则对子字符串重复。
问候