Trasformar String String em String Hexadecimal

ae,

estou querendo fazer duas rotinas pra transformar valores, string string em hexadecimal string…

entende?!

Pode fazer, não sou contra.
Quando ficar pronto, pode postá-las aqui no fórum.

Isto que vc quer?

String str = "Teste"; for(int w=0; w<str.length(); w++) { System.out.print(Integer.toHexString(str.charAt(w)) + " "); } >

isso garoto,
valeu… é disso que estou falando…

:smiley:

o sentido inverso seria bem parecido neh?!

ops…
o sentido inverso não funcionou…
alguem ai tem alguma dicazinha?!

o sentido inverso não funcionou…
alguem ai tem alguma dicazinha

Hoje estou de bom humor.

Suponha que o formato da sua string hexadecimal seja algo como:

“bb4c122bcf2c26004f1413dda6fbfc0a”

A primeira coisa é pegar de dois em dois dígitos (acho que você deve saber usar substring).

A segunda coisa é ver o javadoc de Integer.parseInt. Existem duas versões:
parseInt(String) e parseInt(String, int). É a segunda versão que você tem de pegar. Onde está escrito “radix” você tem de passar 16.

static int parseInt(String s, int radix)
Parses the string argument as a signed integer in the radix specified by the second argument.

Portanto:

int x = Integer.parseInt (“bb”, 16); // vai obter o valor 0xBB, que é 187 em decimal.

Acho que daí dá para você fazer a sua rotina.

mossu,
entendi beleza…

por exemplo, quando coloco ‘61’ ele retorna 97, que é o valor decimal de ‘a’,
só que eu nào consegui ver um método em String que transforme esse decimal em Caracter…

eu num vou ter que criar uma tabela neh?!
ou… vou…

Vou lhe contar um segredo - um ‘char’ é ao mesmo tempo um número (quando aprendi C++ tive um pouco de dificuldade de entender isso no começo, também porque não havia o GUJ naquela época… Mas depois consegui entender.)

Provavelmente o que você quer fazer é algo como:

String s = "";
int ch = 97; 
s = s + (char) ch; // ele faz direitinho

Se você fizer isso alguém vai reclamar aqui de que está criando objetos à toa, portanto para ninguém reclamar vou mostrar como o pessoal costuma fazer:

StringBuffer sb = new StringBuffer();
int ch = 97;
sb.append ((char) ch); 
//... continue a adicionar os caracteres, provavelmente usando um loop. No fim:
String s = sb.toString();

oh,
esse char ai está aonde + ou - no javaDoc?
é java.lang tb?

é um tipo nativo num é? primitivo?

e é isso mesmo que queria fazer…
valeu

Aham, é um tipo primitivo, que contém um caracter Unicode (2 bytes).
Toda String em última instância é um array de char, mas isso fica meio “escondido” de você.

o código tá beleza…
só que… quando tem enter e/ou tab… dá cano…
o que será que é?

[code] /*
encode
transforma uma string caracteres em uma string hexadecimal
*/
public static oracle.sql.CHAR encode(String param) throws java.sql.SQLException{
String result = “”;
for(int i=0; i<param.length(); i++) {
result += Integer.toHexString(param.charAt(i));
}

	oracle.sql.CHAR rs = new oracle.sql.CHAR(result.toString(), oracle.sql.CHAR.DEFAULT_CHARSET  );
	return(rs);	 
	}
  
	/*
	  decode
		transforma uma string hexadecimal em uma string de caracteres
	*/
public static oracle.sql.CHAR decode(String param)throws java.sql.SQLException{
	StringBuffer sb = new StringBuffer(); 
	for (int i=0;i<param.length();i=i+2){
	 	sb.append((char)Integer.parseInt(param.substring(i,i+2), 16));
	 	}
oracle.sql.CHAR rs = new oracle.sql.CHAR(sb.toString(),oracle.sql.CHAR.DEFAULT_CHARSET  );
	return(rs);
}
	[/code]

Hum, é só você limpar os ENTER e TAB antes de usar. Alguém nesse fórum tinha mandado uma rotina que contava o número de espaços, a idéia de tirar ENTER e TAB é muito semelhante:

String strSemEnter = strComEnter.replaceAll("\s", “”);

Veja o javadoc de java.util.regex.Pattern para entender o que é esse “\s” mágico aí.