a cadena hexadecimal
public static String toHexString(int i) devuelve la representación de cadena de un parámetro entero en forma de entero hexadecimal sin signo.
Si el argumento es negativo, el valor entero sin signo es el argumento más 232; de lo contrario, es igual al argumento. Convierte el valor en una cadena numérica ASCII hexadecimal (base 16) sin ceros a la izquierda. Si el valor del tamaño sin signo es cero, se representa mediante un carácter cero '0' ('/u0030'); de lo contrario, el primer carácter en la representación del tamaño sin signo no será un carácter cero. Utilice los siguientes caracteres como números hexadecimales:
0123456789abcdef
Estos caracteres van desde '/u0030' hasta '/u0039' y desde '/u0061' hasta '/u0066'. Si desea letras mayúsculas, puede llamar al método String.toUpperCase() en el resultado:
Entero.toHexString(n).toUpperCase()
parámetro:
i: el número entero que se va a convertir en una cadena.
devolver:
Una representación de cadena de un valor entero sin signo expresado en argumentos hexadecimales (base 16).
//Convierte cadena a codificación hexadecimal
Cadena estática pública a HexString (String s)
{
Cadena cadena="";
para (int i=0;i<s.length();i++)
{
int ch = (int)s.charAt(i);
Cadena s4 = Integer.toHexString(ch);
cadena = cadena + s4;
}
devolver cadena;
}
// Convertir codificación hexadecimal a cadena
Cadena estática pública toStringHex (String s)
{
byte[] baKeyword = nuevo byte[s.length()/2];
para(int i = 0; i < baKeyword.length; i++)
{
intentar
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
captura (Excepción e)
{
e.printStackTrace();
}
}
intentar
{
s = new String(baKeyword, "utf-8");//UTF-16le:No
}
captura (Excepción e1)
{
e1.printStackTrace();
}
devolver s;
}
// Convertir codificación hexadecimal a cadena
Cadena estática pública toStringHex (String s)
{
byte[] baKeyword = nuevo byte[s.length()/2];
para(int i = 0; i < baKeyword.length; i++)
{
intentar
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
captura (Excepción e)
{
e.printStackTrace();
}
}
intentar
{
s = new String(baKeyword, "utf-8");//UTF-16le:No
}
captura (Excepción e1)
{
e1.printStackTrace();
}
devolver s;
}
público estático vacío principal (String [] argumentos) {
System.out.println(encode("中文"));
System.out.println(decode(encode("中文")));
}
/*
* Juego de caracteres numéricos hexadecimales
*/
Cadena estática privada hexString="0123456789ABCDEF";
/*
* Codifica cadenas en números hexadecimales, adecuados para todos los caracteres (incluido el chino)
*/
codificación de cadena estática pública (cadena de cadena)
{
//Obtiene la matriz de bytes según la codificación predeterminada
byte[] bytes=str.getBytes();
StringBuilder sb=nuevo StringBuilder(bytes.longitud*2);
//Descompone cada byte de la matriz de bytes en un entero hexadecimal de 2 dígitos
para(int i=0;i<bytes.length;i++)
{
sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
}
devolver sb.toString();
}
/*
* Decodifica números hexadecimales en cadenas, aplicables a todos los caracteres (incluido el chino)
*/
Decodificación de cadena estática pública (bytes de cadena)
{
ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2);
//Reúne cada entero hexadecimal de 2 dígitos en un byte
para(int i=0;i<bytes.length();i+=2)
baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));
devolver nueva cadena (baos.toByteArray());
}
Segundo método:
Imprima la matriz de bytes especificada en la consola en formato hexadecimal
clase pública Util {
utilidad pública() {
}
/**
* Imprime la matriz de bytes especificada en la consola en formato hexadecimal
* @param sugerencia Cadena
* @param b byte[]
* @retorno nulo
*/
printHexString vacío estático público (sugerencia de cadena, byte [] b) {
System.out.print(pista);
para (int i = 0; i < b.length; i++) {
Cadena hexadecimal = Integer.toHexString(b[i] & 0xFF);
si (longitud hexadecimal() == 1) {
hexadecimal = '0' + hexadecimal;
}
System.out.print(hex.toUpperCase() + " ");
}
System.out.println("");
}
/**
*
* @param b byte[]
* @return Cadena
*/
Cadena estática pública Bytes2HexString (byte [] b) {
Cadena ret = "";
para (int i = 0; i < b.length; i++) {
Cadena hexadecimal = Integer.toHexString(b[i] & 0xFF);
si (hex.longitud() == 1) {
hexadecimal = '0' + hexadecimal;
}
ret += hexadecimal.toUpperCase();
}
volver atrás;
}
/**
* Combina dos caracteres ASCII en un byte;
* Tales como: "EF"--> 0xEF
* @param src0 byte
* @param src1 byte
* @retorno byte
*/
byte estático público uniteBytes (byte src0, byte src1) {
byte _b0 = Byte.decode("0x" + nueva cadena(nuevo byte[]{src0})).byteValue();
_b0 = (byte)(_b0 << 4);
byte _b1 = Byte.decode("0x" + nueva cadena(nuevo byte[]{src1})).byteValue();
byte ret = (byte)(_b0 ^ _b1);
volver atrás;
}
/**
* Convierta la cadena especificada src a formato hexadecimal dividiendo cada dos caracteres
* Por ejemplo: "2B44EFD9" --> byte[]{0x2B, 0x44, 0xEF, 0xD9}
* @param src Cadena
* @return byte[]
*/
byte estático público [] HexString2Bytes (String src) {
byte[] ret = nuevo byte[8];
byte[] tmp = src.getBytes();
para(int i=0; i<8; i++){
ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]);
}
volver atrás;
}
}