Leitura de caracteres especiais com DataInputStream

Estou realizando a leitura de arquivos .txt em Java e depois estou armazenando os códigos da tabela ASCII dos caracteres do arquivo, porém estou tendo problemas com a leitura de caracteres especiais.

Quando vou ler um ã, por exemplo, quando faço (int)c, ao invés de receber o código de ã na tabela ASCII, recebo 65533.

Já encontrei respostas para essa dúvida, como essa por exemplo [RESOLVIDO] Leitura de caracteres especiais
Porém, todas utilizam algo como BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(arq.getPath()), "ISO-8859-1"));
Porém, no meu caso, estou utilizando FileInputStreamReader, BufferedInputStream e DataInputStream, há alguma solução para este caso?

Grato.

ã não esta na tabela ASCII

ã se vc esta lendo ISO-8859-1 vc espera ler 0xE3

http://cs.stanford.edu/people/miles/iso8859.html

o problema é que se vc converter para inteiro, inteiro em JAVA tem 16 bits e 0xE3 cabe em 8 bits.

c é o que? um char? se for e vc quer ver o valor numerico vc talvez precise converter pra short

um detalhe: como java nao tem tipos unsigned, talvez o resultado venha estranho mesmo, principalmente se vier negativo.

Obrigado! Entendi melhor agora.