versHexString
public static String toHexString(int i) renvoie la représentation sous forme de chaîne d'un paramètre entier sous forme entière hexadécimale non signée.
Si l'argument est négatif, la valeur entière non signée est l'argument plus 232 ; sinon, elle est égale à l'argument. Convertit la valeur en chaîne numérique ASCII hexadécimale (base 16) sans zéros non significatifs. Si la valeur de taille non signée est zéro, elle est représentée par un caractère zéro « 0 » (« /u0030 ») ; sinon, le premier caractère de la représentation de taille non signée ne sera pas un caractère zéro. Utilisez les caractères suivants comme nombres hexadécimaux :
0123456789abcdef
Ces caractères vont de « /u0030 » à « /u0039 » et de « /u0061 » à « /u0066 ». Si vous voulez des lettres majuscules, vous pouvez appeler la méthode String.toUpperCase() sur le résultat :
Entier.toHexString(n).toUpperCase()
paramètre:
i - l'entier à convertir en chaîne.
retour:
Représentation sous forme de chaîne d'une valeur entière non signée exprimée en arguments hexadécimaux (base 16).
//Convertir la chaîne en codage hexadécimal
chaîne statique publique toHexString (String s)
{
Chaîne str="";
pour (int i=0;i<s.length();i++)
{
int ch = (int)s.charAt(i);
Chaîne s4 = Integer.toHexString(ch);
str = str + s4 ;
}
return str;
}
// Convertit le codage hexadécimal en chaîne
chaîne statique publique toStringHex (String s)
{
byte[] baKeyword = new byte[s.length()/2];
pour (int i = 0; i < baKeyword.length; i++)
{
essayer
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
attraper (Exception e)
{
e.printStackTrace();
}
}
essayer
{
s = new String(baKeyword, "utf-8");//UTF-16le:Non
}
attraper (exception e1)
{
e1.printStackTrace();
}
retourner s ;
}
// Convertit le codage hexadécimal en chaîne
chaîne statique publique toStringHex (String s)
{
byte[] baKeyword = new byte[s.length()/2];
pour (int i = 0; i < baKeyword.length; i++)
{
essayer
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
attraper (Exception e)
{
e.printStackTrace();
}
}
essayer
{
s = new String(baKeyword, "utf-8");//UTF-16le:Non
}
attraper (exception e1)
{
e1.printStackTrace();
}
retourner s ;
}
public static void main (String[] arguments) {
System.out.println(encode("中文"));
System.out.println(decode(encode("中文")));
}
/*
* Jeu de caractères numériques hexadécimaux
*/
chaîne statique privée hexString="0123456789ABCDEF";
/*
* Encodez les chaînes en nombres hexadécimaux, adaptés à tous les caractères (y compris le chinois)
*/
encodage de chaîne statique public (String str)
{
//Obtenir le tableau d'octets basé sur l'encodage par défaut
byte[] bytes=str.getBytes();
StringBuilder sb=nouveau StringBuilder(bytes.length*2);
// Décompose chaque octet du tableau d'octets en un entier hexadécimal à 2 chiffres
pour(int i=0;i<bytes.length;i++)
{
sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
}
return sb.toString();
}
/*
* Décodez les nombres hexadécimaux en chaînes, applicables à tous les caractères (y compris le chinois)
*/
décodage de chaîne statique publique (octets de chaîne)
{
ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2);
// Assemble chaque entier hexadécimal à 2 chiffres en un octet
pour(int i=0;i<bytes.length();i+=2)
baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));
return new String(baos.toByteArray());
}
Deuxième méthode :
Imprime le tableau d'octets spécifié sur la console sous forme hexadécimale
classe publique Util {
public Util() {
}
/**
* Imprime le tableau d'octets spécifié sur la console sous forme hexadécimale
* @param indice Chaîne
* @param b octet[]
* @retour nul
*/
public static void printHexString (indice de chaîne, octet [] b) {
System.out.print(indice);
pour (int i = 0; i < b.length; i++) {
Chaîne hex = Integer.toHexString(b[i] & 0xFF);
si (hex.length() == 1) {
hexadécimal = '0' + hexadécimal ;
}
System.out.print(hex.toUpperCase() + " ");
}
System.out.println("");
}
/**
*
* @param b octet[]
* @chaîne de retour
*/
public static String Bytes2HexString(byte[] b) {
Chaîne ret = "" ;
pour (int i = 0; i < b.length; i++) {
Chaîne hex = Integer.toHexString(b[i] & 0xFF);
si (hex.length() == 1) {
hexadécimal = '0' + hexadécimal ;
}
ret += hex.toUpperCase();
}
retour à la retraite;
}
/**
* Combinez deux caractères ASCII en un octet ;
* Tel que : "EF" -> 0xEF
* @param src0 octet
* @param src1 octet
* @octet de retour
*/
octet statique public unitBytes (octet src0, octet src1) {
octet _b0 = Byte.decode("0x" + new String(new byte[]{src0})).byteValue();
_b0 = (octet)(_b0 << 4);
octet _b1 = Byte.decode("0x" + new String(new byte[]{src1})).byteValue();
octet ret = (octet)(_b0 ^ _b1);
retour à la retraite;
}
/**
* Convertissez la chaîne spécifiée src sous forme hexadécimale en divisant tous les deux caractères
* Par exemple : "2B44EFD9" --> octet[]{0x2B, 0x44, 0xEF, 0xD9}
* @param src Chaîne
* @octet de retour[]
*/
octet statique public[] HexString2Bytes(String src){
octet[] ret = nouvel octet[8];
octet[] tmp = src.getBytes();
pour(int i=0; i<8; i++){
ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]);
}
retour à la retraite;
}
}