Java строки основаны на символах шириной 16 бит, он пытается выполнить преобразования вокруг этого предположения, если нет четких спецификаций.
Следующий пример кода записывает и считывает данные непосредственно в виде байтов, что означает 8-битные номера, которые имеют связанное с ними значение ASCII.
import java.io.*;
public class RWBytes{
public static void main(String[] args)throws IOException{
String filename = "MiTestFile.txt";
byte[] bArray1 =new byte[5];
byte[] bArray2 =new byte[5];
bArray1[0]=65;//A
bArray1[1]=66;//B
bArray1[2]=67;//C
bArray1[3]=68;//D
bArray1[4]=69;//E
FileOutputStream fos = new FileOutputStream(filename);
fos.write(bArray1);
fos.close();
FileInputStream fis = new FileInputStream(filename);
fis.read(bArray2);
ByteArrayInputStream bais = new ByteArrayInputStream(bArray2);
for(int i =0; i< bArray2.length ; i++){
System.out.println("As the bytem value: "+ bArray2[i]);//as the numeric byte value
System.out.println("Converted as char to printiong to the screen: "+ String.valueOf((char)bArray2[i]));
}
}
}
Фиксированное подмножество 7 битного кода ASCII является печати, А = 65, например, 10 соответствует «новой линии» характера, которые шаги вниз на одну строку на экране, когда найдена и «напечатаны». Существует множество других кодов, которые манипулируют экраном, ориентированным на символы, они невидимы и управляются представлением экрана, таким как вкладки, пробелы и т. Д. Существуют также другие управляющие символы, предназначенные, например, для вызова колокола.
Высший 8-разрядный конец выше 127 определяется как любой желающий, но только нижняя половина имеет стандартные значения.
Для общей обработки двоичных байтов таких признаков нет, они представляют собой число, которое представляет данные. Только при попытке распечатать на экране становится значимым во всех отношениях.
Можем ли мы увидеть код? – Tim
добавил код к нему – Rohan
Как насчет использования кодировки Base64? –