Supponendo di aver già una stringa in esadecimale, ho provato a scrivere un programmino che data tale stringa mi ritorni la stessa ma con ":" ogni due cifre esadecimali. MA continuo ad avere problemi, perchè inserisce i ":" tra un numero e l'altro e non ogni 2:


codice:
#include <iostream>
#include <string>

using namespace std;

const char* dp= ":";

const char* charray = "46a9a3ad7c14709149b004065fe716d5";

string str2;


int main ()
{

string str2(charray); 
str2.assign(charray);

cout << str2 << endl;

for(int i=1; i<256; i++){
   str2.insert(i*2, dp);
  }

cout << str2 <<endl;



return 0;
}
ma il risultato è:

46:a:9:a:3:a:d:7:c:1:4:7:0:9:1:4:9:b:0:0:4:0:6:5:f :e:7:1:6:d5

quando invece dovrebbe essere
46:a9:a3:ad:7c:14:70:91:49:b0:04:06:5f:e7:16:d5

Dove sbaglio?? :-(