Eu tô com um problema eu tenho um arquivo q está numa extensão .map. Eu quero ler cada byte deste arquivo, o que acontece é que o tipo byte em java é estranho, vai de -127 a 128, e eu preciso que ele leia de 0 à 256. Alguém sabe como???
Obrigada!!!
Olha, vc pode usar short, mas ele vai de -256 a 255, ou vc pode usar char que vai de 0 a 65536. Ai eh soh refinar a logica do programa.
oitathi
vc poderia dar uma exemplificada no tipo char???
teria q fazer um cast, ou alguma coisa do tipo?
allancmm
o tipo char eh um tipo inteiro meio disfarçado, vc pode usá-lo normalmente, como int. A diferença eh que ele “tambem” referencia os caracteres Unicodes. Ixxi, acho que ficou meio confuso essa minha explicacao, mas qlq coisa posta ai.
eh eu fiz isso…
cara, vc sabe se tem um jeito de eu ler isso em hexadecimal?
allancmm
Primeiro - nao deu certo como eu falei nao?
Segundo - lê em hexadecimal acho que nao dá nao, mas vc pode usar metodos especificos da classes Integer. Nao lembro qual(is).
oitathi
acho q nem deu certo… tá dando uma diferença… pelo programa XVI 123 que lê o arquivo em hexadecimal, o meu arquivo começa assim: 21 42 53 42 20 45 6C 65…
e em java tah começando assim: 33 66 83 66 32 69 108 101
oitathi
eu consegui assim:
[code]
public void readCharLine(RandomAccessFile fis) throws IOException {
char thisChar = (char) fis.read();
while (thisChar < 128) {
System.out.println(Integer.toHexString((int)thisChar));
thisChar = (char) fis.read();
}
}
allancmm
Vamos comecar de novo.
1 - Vc tem um arquivo onde está escritos numeros em hexadecimal?
2 - Caso sim, vc quer lê-los e printá-los na tela tambem em hexadecimal?
oitathi
não, o arquivo tah em binario…
eh q eu eusei um programa chamado xvi 132 que le qq arquivo em hex… ai queria conferir pra ver se tava dando a mesma coisa…
aparentemente tahj dando certo daquele jeito q vc falou… convertendo em char e depois um cast pra int…
allancmm
oitathi:
não, o arquivo tah em binario…
eh q eu eusei um programa chamado xvi 132 que le qq arquivo em hex… ai queria conferir pra ver se tava dando a mesma coisa…
aparentemente tahj dando certo daquele jeito q vc falou… convertendo em char e depois um cast pra int…
Entao funcionou ou nao?
Stormqueen1990
oitathi:
acho q nem deu certo… tá dando uma diferença… pelo programa XVI 123 que lê o arquivo em hexadecimal, o meu arquivo começa assim: 21 42 53 42 20 45 6C 65…
e em java tah começando assim: 33 66 83 66 32 69 108 101
Essa diferença se dá pelo fato de que o Java transformou o inteiro binário em inteiro decimal ao invés de hexa.
Mas os valores são correspondentes. Dá pra mudar de base numérica com métodos da classe Integer, se não me falha a memória.