est-il possible de représenter un tableau de caractères non signé comme une chaîne?
Quand je l'ai recherché, j'ai découvert que seuls Memset () était capable de le faire (mais le caractère par caractère). En supposant que ce n'est pas la bonne voie, existe-t-il un moyen de faire la conversion? P>
Contexte: J'essaie de stocker la sortie d'une fonction de hachage cryptographique qui se trouve être un tableau de caractères non signés. Mon objectif est de représenter les données comme une chaîne (% s) plutôt que d'y accéder par chaque élément. Depuis que j'ai besoin de la sortie du hachage comme une chaîne pour un traitement ultérieur. p> merci! p> p>
Exemple: p>
5 Réponses :
in c, une chaîne est une matrice de si Ce n'est pas clair ce que vous signifie par "représentant" un tableau de caractères non signé en tant que chaîne. Il est suffisamment facile de jeter le signe, si vous voulez faire quelque chose comme: p> ceci fonctionnera, à Bien sûr, si vous êtes sur un système qui n'utilise pas ASCII, il pourrait s'infiltrer dans des cas Où cela ne fonctionnera pas. Encore une fois, votre question n'est pas très claire. P> p> char code>, terminée avec un caractère dont la valeur est 0. char code> est un type signé ou non signé n'est pas spécifié par la langue, vous devez être explicite et utiliser non signé caractère code> ou signé Char code> si vous vous souciez vraiment. P> printf () code> il n'y a pas ' t la différence, il verra un pointeur à un tableau de personnages et les interprétera comme une chaîne. P>
Je travaille sur un Mac et que le type de casting donne-t-il toujours une valeur indésirable si l'un des caractères non signés a une valeur super Dooper plutôt qu'une valeur ASCII régulière?
Bien une chaîne en C n'est rien d'autre que quelques caractères un après l'autre. S'ils sont non signés ou signés, ce n'est pas un problème, vous pouvez les jeter facilement. p>
Donc d'obtenir une chaîne d'un tableau de caractères non signé Tout ce que vous avez à faire est de vous assurer que le dernier octet est un octet de terminaison '\ 0' puis de lancer ce tableau à char * (ou copiez-le dans un tableau de char) p>
Merci. La solution a l'air si simple. Mais est-ce que je concise un tableau de caractères non signé avec une chaîne? Devrais-je insérer un caractère nul comme dernier élément?
Eh bien, dans un contexte cryptographique, cela pourrait ne pas être aussi facile, tout dépend de la manière dont vous allez traiter la chaîne. Vous devez garder à l'esprit que la sortie d'une fonction de hachage peut déjà contenir '\ 0'-octets, et vous pourriez vous retrouver que vous pouvez simplement travailler sur une partie de la chaîne, car les fonctions de processus de chaîne cesseront de fonctionner si la vue de ce type d'octet
Oui. Je suis complètement d'accord avec votre raisonnement!
Un exemple comme vous avez demandé: p>
Taille de caractère non signé [taille]; p>
C'est juste la déclaration. Je veux savoir s'il est possible d'imprimer ce tableau en tant que "% s" ??
Donc, basé sur votre mise à jour, vous parlez d'essayer de convertir un tampon de charme non signé en une interprétation hexadécimale, quelque chose comme ceci: quelle sortie: p> 0102030405060708090A
@MAVERICKGUGU: C'est ... mais c'est aussi dangereux :) Faites attention aux dépassements de tampon, car il ne fait aucune vérification de la longueur. Il y a une version plus sûre (SnPRINTF), qui vous permet de spécifier la taille maximale pouvant être écrite sur le tampon que vous voudrez peut-être jeter un coup d'œil à.
@forsvarir: Dans le même sens .. pouvons-nous représenter le tableau de caractères non signé dans la représentation binaire de la chaîne? Les suggestions seraient utiles ..
@MAVERICKGUGU: Donc, au lieu de la convertir à une chaîne de: 0A0b, etc., vous voulez 000010, 000011, etc.?
@forsvarir: Oui .. exactement .. pas particulièrement une chaîne. Même un réseau entier de 0s et 1s ferait .. Sera-t-il possible? Je suis à court d'idées.
@MAVERICKGUGU: N'avez-vous pas demandé cette question et avez-vous répondu ici: Stackoverflow.com/Questtions/5680367/...
J'utilise avec succès cela pour convertir une matrice de caractères non signée en STD: chaîne
Qu'est-ce que vous essayez réellement d'atteindre? Superficiellement jeter la matrice à (char *) pourrait réaliser ce que vous avez demandé
N'EST-IL N'EST-IL N'EST PAS UN SIGNED CHARANGE UNE SORGE? Je veux dire que je ne suis pas au courant de valeurs ASCII négatives ...
De côté, Memset définit un tampon à une valeur fournie, un nombre donné de fois, je ne peux donc pas vraiment voir comment cela vous aiderait beaucoup ... l'échantillon de code / pseudo code pourrait aider.
J'ai édité la question avec un contexte. S'il vous plaît n'hésitez pas à signaler si je ne suis pas clair encore.