Perché il dire "decimale", "esadecimale" o ancora "ottale" è solo una questione di rappresentazione "visiva". Non esiste un "byte decimale" o un "byte esadecimale" .... esiste un byte e basta. Sono 8 bit.Originariamente inviato da SHARKSEAL
Il risultato deve essere : byte writeBuffer[] contenete i valori esadecimali della stringa "Pippo"
Praticamente writeBuffer [0] = 50 (esadecimale)
writeBuffer [1] = 69
ecc..."
Perchè non posso parlare di un array di esadecimale ?
Al massimo si può dire se un tipo di dato (byte, int ecc...) è con segno o senza segno.
Termini come "word", "dword" e "qword" sono generalmente (e specialmente quando si lavora con il linguaggio assembly dei processori) usati per indicare semplicemente dei tipi di dato che sono più di 1 byte/8 bit. Ma non centra con la rappresentazione in una certa "base" (8, 10, 16 che sia) di un valore.Originariamente inviato da SHARKSEAL
Se ho capito bene un array di byte (contiene valori di 8 bit ) ... ma cosa mi vieta che questi valori non possa rappresentarli in esadecimali??? Allora che senso avrebbe l'esistenza del byte, della word, della dword, della qword???
Ma lo vedi che stai facendo ancora una volta una "rappresentazione" del valore in una certa base??? Nel sorgente stai scrivendo zero ics effe effe. Stai scrivendo un valore rappresentato in esadecimale che viene assegnato ad un byte. Non è che hai fatto un "byte esadecimale"!!Originariamente inviato da SHARKSEAL
Io ho provato ad utilizzare questo pezzo di codice e funziona benissimo :
byte mioarray[]={(byte)0xFF,(byte)0xFF,(byte)0xFF};
Praticamente penso tutti i linguaggi di programmazione hanno le regole per poter scrivere nel sorgente dei valori "literal" (letterali) non solo in decimale ma anche in altre basi. Insomma .... è solo una sintassi che ti permette di esprimere un valore in ottale piuttosto che esadecimale o altro. Non è che è il byte "esadecimale".
Per la questione del segno è una questione anche qui di "modo di trattamento". Dire ad esempio 0xFF non chiarisce tutto .... bisognerebbe vedere su quale tipo di dato (dimensione, signed o unsigned).Originariamente inviato da SHARKSEAL
Io penso che l'unica cosa di cui devo preoccuparmi è che essendo un array di valori a 8 bit posso rappresentare al massimo 255 (valori in decimale) FF (in esadecimale ma essendo signed in java fino a 7F ovvero (127) in decimale
Se in un linguaggio c'è un tipo di dato che è 8 bit senza segno, allora 0xFF rappresenterebbe 255. Se invece, come succede in Java, il byte è signed (con segno), allora un byte con valore 0xFF vale in realtà -1 (decimale) non 255!!
Ma è solo questione del trattamento. Dire ad esempio 0xA5, potrebbe voler dire -91 se assegnato ad un byte "signed" oppure 165 se ci fosse (non c'è in Java) un byte "unsigned".
Se in Java ho un byte a cui assegno 0xA5 e lo stampo in decimale, mi visualizza -91. Se voglio "vedere" 165, nulla si è perso .... nel senso che basta solo farlo "vedere" come valore unsigned con l'ausilio di un tipo di dato più grande.
Quindi un byte (come qualunque altro tipo di dato) non è esadecimale, ottale ecc.... è la rappresentazione del valore che può essere in una certa base!codice:byte b = (byte) 0xA5; System.out.println(b); // Stampa -91 int i = b & 0xFF; // lo porta a 0x000000A5 System.out.println(i); // Stampa 165
Ripeto ancora una volta che stai sbagliando l'approccio e il modo di vedere le cose. getBytes() ti restituisce un array di byte ... ogni byte ha un valore tra (in binario) 00000000 e 11111111. Cosa tu vuoi "vedere" e come vuoi stamparlo/rappresentarlo .... lo puoi scegliere tu.Originariamente inviato da SHARKSEAL
Il metodo getByte si è vero mi restituisce un array di byte ma con valori decimali non esadecimali .
E in questa discussione ti ho già ampiamente spiegato tutta la questione, ti ho spiegato come eventualmente stampare un valore in esadecimale con l'uso dei toString() nella versione con radix.Originariamente inviato da SHARKSEAL
Io chiedevo solo una funzione che mi convertisse una normale stringa "pippo" nei rispettivi valori esadecimali da poter poi assegnare in un array di byte ... tutto qui.

Rispondi quotando
