Ola pessoal,
Estou tendo problema para converter arquivos textos como esse que esta em anexo para binário e depois pegar o arquivo binário e transformar em texto novamente, como o exemplo citado abaixo:
dafiti_com_br|calcados-masculinos|sapatenis|.html (460.6 KB)
Para converter para binário, a classe Integer é a responsável por converter.
Primeiro, você precisa pegar esse texto e transformar para um array de byte e portanto passar esse array para o Integer, o qual irá fazer a conversão.
O contrário segue a mesma lógica, só que o Integer vai nos retornar o charcode que representa aquele binário. Ai a nossa classe Character nos ajuda.
Exemplo:
public static void main(String[] args) throws UnsupportedEncodingException {
byte[] infoBin = null;
infoBin = "meu texto aqui \n agora um novo paragrafo".getBytes("UTF-8");
final StringBuilder meuBinario = new StringBuilder("");
// De String para Binário
for (byte b : infoBin) {
meuBinario.append(Integer.toBinaryString(b) + " ");
}
System.out.println(meuBinario);
// De Binário para String
for (String bin : meuBinario.toString().split(" ")) {
final int charCode = Integer.parseInt(bin.trim(), 2);
System.out.print(new Character((char) charCode).toString());
}
}
Ola,
Aplicando o código apresentado, parece que quando é realizado a conversão do binário para texto ocorre erro quando se depara com números no meio do texto.
Resultado apresentado:
Na verdade, são os acentos o problema.
Tem uma maneira melhor de fazer:
public static void main(String[] args) throws UnsupportedEncodingException {
byte[] infoBin = null;
infoBin = "meu texto aqui \n agora um novo paragrafo á í Água 983".getBytes("ISO-8859-1");
final StringBuilder meuBinario = new StringBuilder("");
// De String para Binário
for (byte b : infoBin) {
meuBinario.append(Integer.toBinaryString(b) + " ");
}
System.out.println(meuBinario);
System.out.println(Charset.defaultCharset().decode(ByteBuffer.wrap(infoBin)).toString());
}