Pourquoi ne puis-je pas static_cast entre char et unsigned char *?

Apparemment, le compilateur considère être sans rapport avec les types et donc reinterpret_cast est nécessaire. Pourquoi est-ce la règle?

  • Je prends le SHA-1 hash d'une chaîne de caractères. c_str() renvoie une const char * et le SHA-1 fonction prend un const unsigned char * comme argument.
  • Et qu'attendez-vous d'arriver si cette chaîne contient caractère négatif des valeurs?
  • J'attends une valeur négative, c pour devenir c + 256, comme c'est la norme dans la conversion d'un octet signé pour un unsigned un. Honnêtement, je suis juste de faire la conversion pour calculer une valeur de hachage. Je n'aime pas la façon dont ils sont convertis, tant qu'ils sont convertis de la même façon à chaque fois.
  • La conversion d'un char à un unsigned char est une conversion. La conversion de char * à unsigned char* et puis la lecture les éléments en supposant qu'ils ont été convertis lorsqu'ils n'ont pas, c'est très différent. Il fonctionne sur un système où la conversion n'est pas réellement nécessaire un changement dans la représentation (par exemple, sur l'un deux, le système du complément), mais comme c'est une mise en œuvre spécifique de l'hypothèse qu'il est approprié qu'un explicite reinterpret_cast est nécessaire.
InformationsquelleAutor Nick | 2012-04-14