Comparer les deux hex de chaînes de caractères en Java?
Je me suis mise en œuvre d'une simple DHT en utilisant le protocole d'Accord en Java. Les détails ne sont pas importants, mais la chose que je suis bloqué sur est j'ai besoin de hachage des cordes et ensuite voir si l'un haché de chaîne est "moins que" un autre.
J'ai un code pour calculer les hachages en utilisant SHA1 qui renvoie à 40 chiffres longue chaîne hexadécimale (de type Chaîne de caractères en Java) tels que:
69342c5c39e5ae5f0077aecc32c0f81811fb8193
Cependant j'ai besoin d'être en mesure de comparer les deux de ces soi-dire, par exemple:
0000000000000000000000000000000000000000
est inférieure à:
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
C'est la gamme complète des valeurs comme l'40 chiffres chaîne est effectivement ce qui représente 40 hexadécimal les nombres de la plage 0123456789ABCDEF
Personne ne sait comment faire cela?
Merci d'avance.
OriginalL'auteur tree-hacker | 2010-11-23
Vous devez vous connecter pour publier un commentaire.
Les valeurs
0..9
etA..F
sont en hexadécimal chiffres de l'ordre dans le jeu de caractères ASCII, doncdevrait faire l'affaire. Sauf si je suis en manque de quelque chose.
Je suis en supposant que c'est vrai depuis qu'il est en conserve à l'aide d'un algorithme SHA1.
et le billet de dix livres: Même si il est pas, il est assez facile de le tampon de longueur et d'unifier le cas.
OriginalL'auteur James Cronen
De sortie:
1
-1
1 indique une plus grande que
-1 indique moins de
0 indiquent des valeurs égales
OriginalL'auteur Adam
Depuis des caractères hexadécimaux sont dans l'ordre ascii croissant (comme @billet de dix livres indiqué), vous pouvez comparer directement les chaînes de caractères:
OriginalL'auteur Adrian Pronk
Depuis les chaînes de longueur fixe et '0' < '1' < ... < 'A' < ... < 'Z', vous pouvez utiliser
compareTo
. Si vous utilisez des majuscules et des minuscules chiffres hexadécimaux utilisationcompareToIgnoreCase
.OriginalL'auteur vitaut