Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Convertir une chaine de X héxadécimaux en un vecteur de X héxa

7 réponses
Avatar
Michael
Bonjour =E0 tous,

je voudrais ins=E9rer les diff=E9rents =E9l=E8ments de str dans le vecteur
v:

std::string str =3D "0x1 0xFA 0xBF";
std::vector<char> v;

Je pense =E0 une utilisation de istringstream, mais je ne m'en sors pas
pour le moment...

Un petit coup de main peut-=EAtre?

Merci d'avance

Mike

7 réponses

Avatar
Michel Decima
Bonjour à tous,

je voudrais insérer les différents élèments de str dans le vecteur
v:

std::string str = "0x1 0xFA 0xBF";
std::vector<char> v;

Je pense à une utilisation de istringstream, mais je ne m'en sors pas
pour le moment...


Quel est ton probleme exactement ?

Avatar
MeiK
Bonjour à tous,

je voudrais insérer les différents élèments de str dans le vecteur
v:

std::string str = "0x1 0xFA 0xBF";
std::vector<char> v;

Je pense à une utilisation de istringstream, mais je ne m'en sors pas
pour le moment...


Quel est ton probleme exactement ?


une fonction qui permette d'avoir:

v[0] = 0x1
v[1] = 0xFA
et
v[2] = 0xBF

c'est ca ?


--
Michael K. (epitech)
http://etudiant.epitech.net/~meik/
"SoftIce est avant tout un desassembleur."
E.D au proces en appel de Guillermito


Avatar
Michael
Oui c'est ça...
Avatar
Falk Tannhäuser
Michael wrote:
je voudrais insérer les différents élèments de str dans le vecteur
v:

std::string str = "0x1 0xFA 0xBF";
std::vector<char> v;


std::istringstream iss(str);
iss >> std::hex;

puis tu initialises v à la définition :

std::vector<unsigned char> v((std::istream_iterator<unsigned>(iss)),
std::istream_iterator<unsigned>());

ou alors si v a déjà été défini avant, tu le réaffectes :

std::vector<unsigned char> v;
// ...
v.assign(std::istream_iterator<unsigned>(iss),
std::istream_iterator<unsigned>());

Bien sûr, il te faudra un #include de <sstream> et de <iterator>.

Falk

Avatar
Michel Decima
Oui c'est ça...


J'avais bien compris le but du programme, mais je voulais
savoir ce qui te bloque: l'utilisation de istringstream,
le fait que l'entree est en hexa, autre chose ?

Avatar
Michael
Merci pour le code, ça fonctionne nickel...

Cepandant j'ai une question avec ce code (un peu différent):

std::string str = "0x1B 0x06 0x00 0x01 0x00 0x00";
std::istringstream iss(str);
iss >> std::hex;

std::string s((std::istream_iterator<unsigned>(iss)),
std::istream_iterator<unsigned>());

Est-ce que le 0x00 va être considéré comme une fin de chaine?
Avatar
Sylvain Togni
Michael wrote:

Cepandant j'ai une question avec ce code (un peu différent):

std::string str = "0x1B 0x06 0x00 0x01 0x00 0x00";
std::istringstream iss(str);
iss >> std::hex;

std::string s((std::istream_iterator<unsigned>(iss)),
std::istream_iterator<unsigned>());

Est-ce que le 0x00 va être considéré comme une fin de chaine?


Non, c'est les chaînes C qui se terminent par le caractère nul,
les std::string peuvent tout-à-fait contenir des caractères nuls.

--
Sylvain Togni