(Devido ao motivo do comprimento, a explicação não é detalhada e científica o suficiente, por favor, não critique se não gostar).
Costumo ver diferentes definições de matrizes de bytes em Java, então as resolverei:
Um byte = 8 bits, e todos os "Bytes Array" são "byte", ou seja, cada byte pode ser representado em binário, hexadecimal e decimal.
Binário: 00010110 ------> 0*2^8 + 0*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0 = 22
Hexadecimal: 0x16 -------> 1*16^1 + 6*16^0 = 22
Decimal: 22
Portanto, os três seguintes são equivalentes:
byte [] aa = {00010110, 01010010, 10111000};
byte [] aa = {0x16, 0x52, 0xb8};
byte [] aa = {22, 82, 184};
Ao depurar pontos de interrupção do Eclipse, o conteúdo das matrizes de bytes que você vê são expressos em decimal. Às vezes, você vê números negativos porque os números acima de 127 na matriz de bytes serão exibidos como números negativos.
Sabemos que o Java lê apenas as matrizes de bytes de suporte, enquanto o byte é de 8 bits, por isso não pode exceder 127. Se exceder, ele transbordará e será exibido na forma de um número negativo.
O artigo acima fala brevemente sobre os diferentes métodos de escrita da matriz de bytes de Java é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.