Como trásformar numeros binarios em arquivo .txt .png

9 respostas
R

E .txt .png em números binarios

9 Respostas

R

Tem um conversor de binário para arquivo .png .txt ?

Lucas_Camara

Supondo que vc tenha um array de bytes numa variável (ex.: byte[] arquivoQualquer), vc pode usar Apache Commons IO e tentar isso:

FileUtils.writeByteArrayToFile(new File("pathname"), arquivoQualquer);
R

Supondo que 00000001 e 01010101 são dois arquivos .txt ele me geraria quais arquivos . Uma dúvida, o nome do arquivos (que gera) seria igual ou diferente

fventurajr

Por que você não executa o código que o colega passou e vê por si próprio?

R

Não entendi o código não sei executar

R

Pode botar ele detalhado e um exemplo? Sou novo em programacao

R

Hey
Supondo que 00000001 e 01010101 são dois arquivos .txt ele me geraria quais arquivos . Uma dúvida, o nome do arquivos (que gera) seria igual ou diferente
Alguém me ajuda aí
Des de já agradeço.

R

Alguém responde.

Lucas_Camara

Montém uns testes aqui para vc dá uma olhada e entender a diferença de “array de bytes” e “representação binária”:

// Obtém os bytes hexadecimais da palavra "teste"
byte[] bytes = "teste".getBytes();

// Imprime o hexadecimal referente a cada letra da palavra "teste"
for(byte b1 : bytes) {
	System.out.println(b1);
}

System.out.println("---------------");

// Converte cada hex para binário
List<String> binaryArray = new ArrayList<>();
for(byte b1 : bytes) {
	String s1 = String.format("%8s", Integer.toBinaryString(b1 & 0xFF)).replace(' ', '0');
	System.out.println(s1);
	binaryArray.add(s1);
}

System.out.println("---------------");

// Obtém o texto "teste" a partir dos array de bytes inicial
System.out.println(new String(bytes));

System.out.println("---------------");

// Obtém o array de bytes a partir da lista de binários e imprime a palavra "teste"
byte[] newBytes = new byte[binaryArray.size()];
int cont = 0;
for(String binary : binaryArray) {
	int decimal = Integer.parseInt(binary, 2);
	String hexStr = Integer.toString(decimal, 16);
	newBytes[cont++] = (byte) Integer.parseInt(hexStr, 16);
}
System.out.println(new String(newBytes));

Ao pensar em transformar binário em arquivo da forma como vc está perguntando, não é utilizado a representação binária como está pensando, é utilizado o array de bytes do tal arquivo, e a conversão é feita da forma como postei:

Usando a biblioteca Apache Commons IO (por facilitar a operação)

FileUtils.writeByteArrayToFile(new File("pathname"), arquivoQualquer);

Ou pode fazer assim:

File file = new File("meuarquivo.png"); //Criamos um nome para o arquivo
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); //Criamos o arquivo
bos.write(bytes); //Gravamos os bytes lá
bos.close(); //Fechamos o stream.

Em momento algum é usado os binários como está pensando, mas sim sua representação hexadecimal na forma de array.

Colegas do GUJ. Como é um assunto que não domino muito bem, por favor, sintam-se a vontade de agregar/corrigir algo que postei. Ficarei muito grato.

Criado 8 de janeiro de 2020
Ultima resposta 9 de jan. de 2020
Respostas 9
Participantes 3