Codé en hexadécimal Chaîne de Tableau d'Octets
String str = "9B7D2C34A366BF890C730641E6CECF6F";
Je veux convertir str
en tableau d'octets, mais str.getBytes()
retourne 32 octets au lieu de 16.
- Ce n'est pas un bug à tous.
- Certains valide code java serait utile...
- Nizet - sûr, que la Chaîne de 16 caractères, chacun codé sur 16 bits. Qui résultats dans - toujours pas vraiment surprenant - 32 octets. Java utilise UTF16 en interne, 1 char = 2 octets.
- À la question de l'OP. La Chaîne de 32 caractères. En Outre Chaîne.getBytes() ne retourne pas la représentation interne de la Chaîne en octets. Elle retourne la Chaîne de caractères comme un tableau d'octets à l'aide de la plateforme par défaut l'encodage (qui pourrait être UTF8, ISO8859-1, CP-1252, ..., à l'aide de 1 octet par ASCII char)
- Nizet - la question ne comprend pas valide code Java et c'est mon interprétation que le filandreux chose est de 16 octets valeur entière en format hexadécimal. (c'est pourquoi j'ai recommandé valable de code java dans mon premier commentaire)
- OK. Compris. Sans une bonne question, difficile de donner une réponse correcte.
Vous devez vous connecter pour publier un commentaire.
Je pense que ce que l'interlocuteur est après la conversion de la représentation sous forme de chaîne hexadécimale de la valeur à un tableau d'octets représentant la valeur hexadécimale.
Apache commons-codec a une classe pour que, Hex.
org.bouncycastle.util.encoders.Hex
pour faire ce genre de travail.Java SE 6, ou Java EE 5 fournit une méthode pour le faire maintenant, donc il n'est pas besoin de bibliothèques supplémentaires.
La méthode est DatatypeConverter.parseHexBinary
Dans ce cas, il peut être utilisé comme suit:
La classe offre également de conversions de type pour de nombreux autres formats qui sont généralement utilisés dans le XML.
Utilisation:
for(byte b : str.getBytes("UTF-16LE")) System.out.println(b);
Je sais il est tard mais j'espère que ça aidera quelqu'un d'autre...
C'est mon code: Il en faut deux par deux hex de déclarations contenues dans le String et les ajouter dans le tableau d'octets.
Il fonctionne parfaitement pour moi.
Cela devrait faire l'affaire :
essayez ceci:
Je suppose que vous avez besoin de convertir une chaîne hexadécimale dans un tableau d'octets qui correspond, qui signifie la même chose en tant que chaîne hexadécimale?
L'ajout de cette méthode devrait le faire pour vous, sans supplément de la bibliothèque d'importation: l'