Convertire Hexdump stringa in C
Domanda
C'è un modo per convertire un esadecimale per esempio aec4d2f3c6a4e70ea6cea074f65812d2a34b180cc92b817edcd867167e7a91c5beb942f0 in una stringa in C in modo che ogni due cifre esadecimali fanno un char? Se sì, quali?
Soluzione
Legge dallo standard input e stampa sullo standard output:
int main()
{
int ch;
while(scanf("%2x", &ch) == 1)
putchar(ch);
}
Penso che si può modificare facilmente voi stessi per le vostre esigenze di origine e destinazione specifiche.
Altri suggerimenti
Uno dei modi:
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;
}
Usa scanf con %hhx
ripetutamente. Vedere man scanf
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow