1

我有以下 C 字符串

"72e4247d3c91f424c62d909d7c1553a5"

它由 32 个十六进制数字组成。它是一个包含 4 个十六进制整数的数组。如何从这个数组中取回整数形式的数字?

4

2 回答 2

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 个字符长,并且它不进行输入验证。如果您使用的是卡在 1980 中的Redmond 编译器,请使用unsigned long而不是uint32_t.

于 2013-06-03T15:37:18.610 回答
0

你试过strtol吗?

int val = (int) strtol (hex_string, NULL, 16);

如果它是扁平数组,则对子字符串重复。

问候

于 2013-06-03T15:36:20.473 回答