allora credo di aver capito meglio il mio problema, la codifica è errata perchè usa solo 7 bit e poi ha valori sui. Quindi ho pensato di trasmettere direttamente in byte e i numeri superiori a 127 li trasformo nel loro equivalente negativo in complemento a 2, cioè faccio valore-256, ora mi sorge un ulteriore problema, non mi funziona il codice
ho creato questa classe
codice:
public class Convertitore
{
public static int CONVERSORE = 256;
public byte ConvertitoreValore(int i)
{
if (i>127) return (byte) (i-CONVERSORE);
else return (byte) i;
}
}
e l'ho usata in questo modo
codice:
public void Connessione(String ip, int port) throws UnknownHostException, IOException
{
Socket socket = new Socket(ip, port);
if ( socket.isConnected()) System.out.println("Connection established");
else System.out.println("Connection not established");
byte[] arrayChar = new byte[6];
arrayChar[0] = valore.ConvertitoreValore(128);
arrayChar[1] = (byte) valore.ConvertitoreValore(129);
arrayChar[2] = (byte) valore.ConvertitoreValore(3);
arrayChar[3] = (byte) valore.ConvertitoreValore(128);
arrayChar[4] = (byte) valore.ConvertitoreValore(128);
arrayChar[5] = (byte) valore.ConvertitoreValore(128);
System.out.println(arrayChar);
System.out.println((byte) arrayChar[1]);
System.out.println((byte) arrayChar[5]);
PrintWriter toServer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
BufferedReader fromServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
toServer.print(arrayChar);
toServer.flush();
socket.close();
}
ora mi da i seguenti errori
codice:
Exception in thread "main" java.lang.NullPointerException
at connessione.ConnessioneSocket.Connessione(ConnessioneSocket.java:29)
at connessione.Activity.main(Activity.java:14)
dopo la riga di codice
codice:
arrayChar[0] = valore.ConvertitoreValore(128);
avete idea del motivo?