Environ les suivantes (Je voudrais pouvoir le raccourcir et utiliser des fonctions de bibliothèque, des idées?):
La fonction string_to_vector
prend une chaîne de caractères et sa longueur en entrée. Il va sur la chaîne, en traitant deux caractères (str[ i ]
et str[ i + 1 ]
) à la fois. (Pour les valeurs impaires n
, la dernière passe ne traite qu'un caractère (str[ i ]
cependant.) Chaque caractère est converti en valeur numérique à l'aide de la méthode hex_char_to_int, puis il construit un nombre en "joignant" les deux valeurs numériques en les décalant et en les ajoutant. , la valeur numérique construit est ajouté à un vecteur de valeurs numériques qui est retourné à la fin de la fonction.
std::vector<unsigned>
string_to_vector(const char * str, size_t n) {
std::vector<unsigned> result;
for(size_t i = 0; i < n; i += 2) {
unsigned number = hex_char_to_int(str[ i ]); // most signifcnt nibble
if((i + 1) < n) {
unsigned lsn = hex_char_to_int(str[ i + 1 ]); // least signt nibble
number = (number << 4) + lsn;
}
result.push_back(number);
}
return result;
}
la fonction suivante convertit les caractères dans la plage [0-9A-Za-z]
à la valeur entière non signée correspondante.
unsigned
hex_char_to_int(char c) {
unsigned result = -1;
if(('0' <= c) && (c <= '9')) {
result = c - '0';
}
else if(('A' <= c) && (c <= 'F')) {
result = 10 + c - 'A';
}
else if(('a' <= c) && (c <= 'f')) {
result = 10 + c - 'a';
}
else {
assert(0);
}
return result;
}
Il est difficile de comprendre ce que vous voulez dire, essayez-vous d'aller de 'char * strRep =" abcdef "' à int intRep = 11259375; '? ou Essayer d'analyser la chaîne en octets séparés? – Nate
donc j'ai juste une énorme chaîne .... qui est en fait une chaîne hexagonale. donc quelque chose comme AFAB2591CFB70E77C7C417D8C389507A5 ... maintenant je veux le mettre dans un tableau d'octets comme const byte test [] {0xaf, 0xab ....}; donc je suppose que j'essaye d'analyser la grande chaîne ainsi je peux l'employer dans mon code pour initialiser un tableau d'octets. Est ce que ça aide? –