L'initialisation d'un unsigned char tableau avec des valeurs hexadécimales en C++

Je voudrais initialiser un unsigned char tableau avec 16 valeurs hexadécimales. Cependant, je n'ai pas l'air de savoir comment initialiser correctement/accéder à ces valeurs. Lorsque je tente d'y accéder que je veuille intuitivement, je suis arriver a aucune valeur.

C'est ma sortie

The program was run with the following command: 4
Please be a value! -----> p
Here's some plaintext 

lors de l'exécution avec le code ci-dessous -

int main(int argc, char** argv)
{
  int n;
  if (argc > 1) {
    n = std::stof(argv[1]);
  } else {
    std::cerr << "Not enough arguments\n";
    return 1;
  }

  char buff[100];
  sprintf(buff,"The program was run with the following command: %d",n);
  std::cout << buff << std::endl;

unsigned char plaintext[16] = 
   {0x0f, 0xb0, 0xc0, 0x0f,
    0xa0, 0xa0, 0xa0, 0xa0,
    0x00, 0x00, 0xa0, 0xa0,
    0x00, 0x00, 0x00, 0x00};

unsigned char test = plaintext[1]^plaintext[2];

std::cout << "Please be a value! -----> " << test << std::endl;

std::cout << "Here's some plaintext " << plaintext[3] << std::endl;

  return 0;
}

En contexte, c'est la partie d'un groupe projet pour l'école. Nous sommes finalement en essayant de mettre en œuvre le Serpent de chiffrement, mais continuer à se fauché par unsigned char tableaux. Notre projet de spécification dit que nous devons avoir deux fonctions qui prennent ce serait tableaux d'Octets en Java. Je suppose que le plus proche parent en C++ est un unsigned char[]. Sinon, je voudrais utiliser le vecteur. Ailleurs dans le code que j'ai mis en place un setKey fonction qui prend un unsigned char tableau, les packs de ses valeurs, 4 long ints (la clé doit être de 256 bits) et effectue divers de décalage de bits et xor opérations sur les entiers pour générer les clés nécessaires à l'algorithme de chiffrement. J'espère que c'est assez de fond sur ce que je cherche à faire. Je suppose que je suis juste surplombant quelques notions de C++ fonctionnalité ici. Merci pour toute aide!

  • Quel est donc le problème?
  • utiliser la conversion pour convertir votre char d'entrée en usnsigned char..
  • l'impression d'un unsigned char avec cout imprime le caractère ASCII par défaut. Si vous voulez juste pour imprimer la valeur, faites ceci: std::cout<<std::hex<<static_cast<unsigned int>(test)<<std::endl;
  • std::stof convertit une chaîne en une valeur en virgule flottante. vouliez-vous dire std::stod?
InformationsquelleAutor hatgirl | 2013-11-13