Converter arquivo texto em binário

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());
	}