Il y a un Binary2String()
dans mon projet.Sprintf() erreur
Cela fonctionne bien pendant longtemps. Mais il a levé l'exception quand vec[0] = 255
sur sprintf(temp, "%02d ", vec[i]);
.
Code original comme cela,
void Binary2String(const vector<unsigned char>& vec, string& result)
{
if(vec.size() == 0)
return;
for(size_t i = 0; i < vec.size(); i++)
{
char temp[4] = {0};
sprintf(temp, "%02d ", vec[i]);
result.push_back(temp[0]);
result.push_back(temp[1]);
result.push_back(temp[2]);
}
}
Ensuite, je fixe le bug comme cela, je ne peux pas comprendre le vecteur et sprintf() terminé.
Est-ce logique ou non? (Je suis nouveau à C++. Merci)
char temp[6] = {0};
sprintf(temp, "%02d ", vec[i]);
result.push_back(temp[0]);
result.push_back(temp[1]);
result.push_back(temp[2]);
result.push_back(temp[3]);
result.push_back(temp[4]);
'% 03hhu' serait _most_ approprié, car il est pas un type signé et ce n'est pas' int' taille. –
@Chris: vrai, j'ai mis à jour la réponse. – Jon
Merci pour la feuille de triche. Je voulais quelque chose comme ça depuis des lustres. Je ne savais pas que quelqu'un avait pris le temps de l'écrire. –