10
votes

Convertir une chaîne hexagonale en un octet en Java

en Java, comment une représentation stricte hexadécimale d'un octet (par exemple "1e") peut-elle être convertie en une valeur d'octets?

Par exemple: P>

byte b = ConvertHexStringToByte("1e");


3 commentaires

Alors, quelle est votre question? Si seulement?


C'était une bonne question. Pourquoi était-ce fermé?


D'accord avec @joe. Mais voir aussi Stackoverflow.com/Questtions/9655181/...


3 Réponses :


15
votes
Integer.parseInt(str, 16);

3 commentaires

J'ai essayé cela, mais cela crée un int, pas un octet - donc pour "1E", je n'aurais pas 30 ans, pas 0x1e, même si je mets à un octet.


Comment distingueriez-vous un octet de la valeur 30 et 0x1e, qui sont stockés de manière identique en cas d'octet de type?


@phpscriptCoder: Non, vous obtiendrez 1e. Essayez ceci: String Roundtrip = Integer.tohexstring (Integer.parseint (Str, 16));




21
votes

Vous pouvez utiliser byte.parsebyte ("a", 16); Mais cela ne fonctionnera que pour des valeurs jusqu'à 127, Les valeurs plus élevées que cela devront être lancées à des octets, en raison de problèmes signés / non signés Je recommande donc de le transférer à un int puis de le jeter en octet xxx


2 commentaires

& 0XFF est utilisé pour obtenir une valeur non signée de Int.


Cela devrait être la réponse acceptée! C'est exactement ce dont j'avais besoin!