我有以下C字符串
"72e4247d3c91f424c62d909d7c1553a5"
它由32个十六进制数字组成。它是一个包含4个十进制整数的数组。如何从这个数组中以整数形式返回数字?
答案 0 :(得分:3)
您必须分别解析四个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个字符,并且没有输入验证。如果您使用的是Redmond的stuck in the 1980编译器,请使用unsigned long
代替uint32_t
。
答案 1 :(得分:0)
你试过strtol
吗?
int val = (int) strtol (hex_string, NULL, 16);
如果它是一个扁平数组,则重复子串。
此致