Originariamente inviato da lio.b
è ovvio che devo fare dei confronti diversi dall'uguaglianza e precisamente devo applicare l'operatore di < e >.
Posso farlo direttamente con il metodo compareTo dei byte o sono obbligato a convertire i byte in interi? E perchè?
Per usare compareTo() dovresti passare da byte a Byte. Credo proprio che nel tuo caso non convenga affatto.

Originariamente inviato da lio.b
2. qualora l'indirizzo sia ipv6 l'ottetto contiene anche valori letterali, a questo punto la conversione in interi si può fare?
No, anche qui non hai capito. È la rappresentazione "testuale" degli indirizzi IPv6 che è particolare. Con il IPv4 la rappresentazione testuale è fatta con 4 valori decimali nel range 0-255. In IPv6 la rappresentazione tipica è in esadecimale, del tipo: 2001:0db8:85a3:0000:0000:8a2e:0370:7334

A te NON cambia nulla. Un byte è un byte con 256 valori. Punto.


Per concludere: già fare una comparazione < > sugli ottetti di un indirizzo IP ha probabilmente poco senso. Perché dovresti prima stabilire come (e perché) trattare gli ottetti. Con segno? Senza segno?


IP1: 0x86 0x46 0x23 0x36
IP2: 0x73 0x34 0x18 0x68

0x86 è minore o maggiore di 0x73??? Dipende!!!

Se li intendi con segno allora ti basta comparare direttamente i byte: -122 (0x86) è < di 115 (0x73).

Se li intendi senza segno allora devi convertire il byte in int "annullando" la estensione del segno, ovvero facendo b&0xFF. 134 (0x86) è > di 115 (0x73)

Ma per scegliere una o l'altra soluzione devi prima avere ben chiaro perché devi fare questa comparazione degli IP e per quale scopo!!!!!