Enrrolado com bytes

4 respostas
P

olá pessoal…

é o seguinte, preciso criar um array de bytes dessa forma
new byte[]{1,2,4,8,16,32,64,128,64,32,16,8,4,2,1,129,129,129}
mas não consigo por conta desse 128 e 129,

é que preciso mandar um comando direto na porta serial e precisa ser desta forma como esta, mas so consigo mandar para porta serial como um array de bytes, mas to enrrolado nessa…

4 Respostas

B

Ola

Bom cara, seguinte, se vc quer mandar um byte que a representasao dele e maior que 127 ha um serio problema, talvez a conversao do seu dado para byte nao tenha sido muito bem feita…

Nao vejo uma solucao para o seu problema, mas se falar o que vc ta querendo mandar pra porta serial a gente pode te dar uma ajuda.

C

Olá pregospan,

Em Java, todo tipo primitivo numérico é representado em complemento de dois; portanto, em 1 byte (8 bits), você tem 256 números diferentes (de -128 a 127). É por isso que você não pode colocar diretamente um número maior do que 127. Você pode fazer uma conversão

(byte) 129

que vai te retornar o número -127 (se eu não estou enganado), devido à representação em complemento de dois. Ou seja, não tem como você representar números maiores que 127 em um byte, por causa da regra de representação de números da linguagem Java. Só se essa conversão ainda te servir de alguma maneira…

Até mais,

M

Só complementando a resposta do CD1.

Se fizer uma conversão explicita (byte) 129, ele realmente vai
atribuir o -127. Isso acontece quando estoura a limite que o tipo de dados suporta, volta ao seu valor minimo e continua normalmente.

P

a situação é a seguinte…
estou implementando uma classe para imprimir em impressora fiscal bematech…
estou fazendo da seguite forma: para jogar na porta serial uso um Meu_OutputStream.wirte( byte [] )
eu monto o camando em mando por este metodo, so que tem um comando para criar um caracter grafico para autenticação de documento que funciona assim…
cada byte é uma coluna, onde o bit menos siginificativo correponde à agulha mais alta da cabeça de impressão… fica +/- assim
imagem de como deve ser
por isso eu preciso de um array assim…
new byte[]{1,2,4,8,16,32,64,128,64,32,16,8,4,2,1,129,129,129}
para que eu possa imprimir desta forma as colunas 15 16 17 18 ela diz para concatenar os bits…
essa é o maior problema, quando tento outra representação grafica que não precise concatenar funciona direitinho mas assim não consigo montar o array pra jogar na porta serial…

Criado 24 de julho de 2006
Ultima resposta 25 de jul. de 2006
Respostas 4
Participantes 4