As pessoas que usam UE acharão muito conveniente exibir arquivos em hexadecimal. Por que beliscar? Quando você deseja criptografar, transcodificar e codificar o arquivo, um monte de 01 binário aparecerá e o olhará. Afinal, o arquivo de exibição hexadecimal é curto e conveniente. Pelo menos, apliquei o cartão durante o exame de admissão da escola secundária e o exame de admissão da faculdade. Obviamente, os sapatos infantis que podem pintar 1248 no exame de entrada do ensino médio e no exame de entrada da faculdade podem dizer rapidamente que eles definitivamente não terão chance de ser a profissão "sagrada" dos programadores ...
Como tentei participar do concurso de inovação de popularização científica antes, fiz dongdong naquele momento, leia o arquivo em transmissões de bytes e converti -o em cordas binárias, quadradas e hexadecimais e, em seguida, o caprava no console de uma só vez. Então, de acordo com o valor de cada bit, ele é exibido em uma matriz de 2 cores, 4 cores e 16 cores, respectivamente. O objetivo de escrever isso é usar a câmera para identificá -la e, em seguida, restaurá -la em um fluxo de bytes e escrevê -lo no arquivo. Esse design do programa é o produto de um híbrido de dois fatos dolorosos - 1. Não requer transferência de arquivos por meio de qualquer mídia e dispositivos USB; Você pode fazer esta pergunta, use uma câmera ou alto -falante para enviar e receber arquivos para ver quem pode transmitir -a rapidamente.
Obviamente, a parte mais importante é que o fluxo de bytes do arquivo é lido em bytes de 8 bits e exibido em dois hexadecimais. Como você pode encontrar a situação em que o byte é convertido em código INT e complementar, é melhor unificá -lo em um número positivo primeiro.
A cópia do código é a seguinte:
int resultado = bytes & 0xff;
Não subestime essa frase, é realmente muito interessante. Pense nisso com cuidado, se você adicionar um 0xFF ao Shenma e isso se tornará um número positivo? 0xFF é 1, então não significa que não há alteração na operação? Humph, alguém me perguntou isso antes. O intervalo de byte é -128 ~ 127, não 0 ~ 255, então, atribuições como byte b = -42;
Não é difícil transformá-lo e convertê-lo em uma string n-dígito. Se você pensa com cuidado, existe uma classe familiar, mas desconhecida, que traz diretamente essa função? É isso mesmo, está apenas usando o número inteiro! Mas não se preocupe, antes de usá -lo, você precisa fazer alguns pequenos movimentos sobre isso Int.
A cópia do código é a seguinte:
(bytes e 0xFF) + 0x100
Você sabe por quê? Isso é +256, apenas para vê -lo mais intuitivamente, basta adicionar um na frente. Porque se o INT que você recebe for convertido em string, é provável que haja apenas um pouco, ou seja, se o byte for perdido quando o hexadecimal for convertido em hexadecimal, todo o programa será completamente extraviado? Para ser seguro, é melhor unificar três.
Você pode tentar isso para ver todas as saídas após o byte ser alterado para hexadecimal
A cópia do código é a seguinte:
public static void main (string [] args) {
para (int i = -128; i <128; i ++) {
byte b = (byte) i;
System.out.println (Integer.toString ((B & 0XFF), 16));
}
}
Vendo isso, você pensaria: por que você é tão estúpido? Por que o INT no loop foi alterado para byte? Ok, você pode tentar, não vou tentar de qualquer maneira ...
Então, o código que finalmente converte byte em hexadecimal de dois bits é
A cópia do código é a seguinte:
Integer.ToString ((Bytes & 0xff) + 0x100, 16) .Substring (1);
Para binário, quad e octal, todos eles são iguais, então não darei um exemplo. É implementado em apenas uma frase de código, é incrível ...
Em seguida, use a treliça da matriz para exibir o quadro de arquivo por quadro, use a câmera para capturar a cor do reconhecimento, converter a string e feedback a cor para que a outra parte saiba que o reconhecimento é concluído e substitua a próxima foto. .. Este ciclo é até a rede da matriz que o arquivo terminou. Não vou postar esta parte do código, todo o processo pode ser produzido por yy com imaginação rica ...
Então a string é transformada de volta ao riacho de bytes, que é simples de viver
A cópia do código é a seguinte:
(byte) Integer.parseint (String, 16)
Você nem precisa de operações de bits, apenas produz os resultados, coloca -os em uma matriz de bytes e os escreva repetidamente com a gravação do FileOutputStream! Não se esqueça de desligar o fluxo de entrada e saída