Вам придется разобрать четыре 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 символов, и это не делает никакой проверки ввода. Если вы используете компилятор из Редмонда, который равен stuck in the 1980, используйте unsigned long
вместо uint32_t
.
32 цифры, содержащие только одно число. Что касается того, как вы можете вернуть их - есть ли у вас код, который сделал первоначальное преобразование? Просто отмените это. Скорее всего, принимайте по 8 цифр за раз и конвертируйте их в целое представление, возможно используя sscanf(). – mah
@mah проверить мой ответ, это работает? –
Существует несколько десятков способов конвертировать символ hex в двоичный файл. (Но у вас действительно есть символ hex, или это просто шестнадцатеричный дамп двоичного значения строки?) –