Конвертировать Hexdump в строку в c - PullRequest
0 голосов
/ 15 января 2011

Есть ли способ преобразовать hexdump, например, aec4d2f3c6a4e70ea6cea074f65812d2a34b180cc92b817edcd867167e7a91c5beb942f0 в строку в c, чтобы каждые две шестнадцатеричные цифры образовывали символ?Если так, то что?

Ответы [ 3 ]

4 голосов
/ 15 января 2011

Читает из стандартного ввода и печатает в стандартный вывод:

int main() 
{
    int ch;
    while(scanf("%2x", &ch) == 1)
        putchar(ch);
}

Я думаю, что вы можете легко изменить его в соответствии с вашими требованиями к источнику и пункту назначения.

3 голосов
/ 15 января 2011

Один из способов:

size_t unBytes = strHex.size() / 2;
std::string strResult(unBytes, 0);
for (size_t i = 0; i < unBytes; ++i)
{
    std::istringstream in(strHex.substr(2*i, 2));
    int byte = 0;
    in >> std::hex >> byte;
    strResult[i] = byte;
}
0 голосов
/ 15 января 2011

Используйте scanf с %hhx несколько раз.Смотри man scanf.

...