Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Rappresentazione completa di un numero esadecimale (compresa di zeri non significativi)
Forum - C# / VB.NET - [C#] Rappresentazione completa di un numero esadecimale (compresa di zeri non significativi)

Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 14:20
Martedì, 14/08/2012
Ciao a tutti. Devo rappresentare un byte sottoforma di stringa esadecimale.
Dunque uso:
Codice sorgente - presumibilmente Plain Text

  1. ((byte) numero).ToString("X")



Il problema è che se questo byte è compreso tra 0 e 9, cioè ha uno zero non significativo a sinistra, la rappresentazione diventa
9
anzichè
09
Come posso ovviare al problema?

Grazie in anticipo :)

EDIT: Scusate, ovviamente il problema si propone non da 0 a 9, ma da 0 a F, essendo in base 16 :)

Ultima modifica effettuata da a_butta il 14/08/2012 alle 14:22


PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 435
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 15:18
Martedì, 14/08/2012
prendi una array temp di 16 caratteri
Codice sorgente - presumibilmente C# / VB.NET

  1. char temp[] = "0000000000000000"


se per esempio prendiamo la stringa di esempio ovvero x = "9"
allora temp ha lunghezza 16; x ha lunghezza 1
fai una cosa del genere premesso che ci sia un metodo che da una stringa ti ritorni l'array di char..
Codice sorgente - presumibilmente C# / VB.NET

  1. int off = 16 - x.lenght;
  2.  
  3. for(int i = off; i < 16; i++){
  4.      temp[i] = x[i - off];
  5. }


in questo modo temp conterrà
temp = "0000000000000009"

cioè in parole povere metto in coda a temp x

Spero di essere stato chiaro...

Ultima modifica effettuata da Bonny il 14/08/2012 alle 15:19


Bonny
PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 19:20
Mercoledì, 15/08/2012
Testo quotato

Postato originariamente da Bonny:

prendi una array temp di 16 caratteri
Codice sorgente - presumibilmente C# / VB.NET

  1. char temp[] = "0000000000000000"


se per esempio prendiamo la stringa di esempio ovvero x = "9"
allora temp ha lunghezza 16; x ha lunghezza 1
fai una cosa del genere premesso che ci sia un metodo che da una stringa ti ritorni l'array di char..
Codice sorgente - presumibilmente C# / VB.NET

  1. int off = 16 - x.lenght;
  2.  
  3. for(int i = off; i < 16; i++){
  4.      temp[i] = x[i - off];
  5. }



in questo modo temp conterrà
temp = "0000000000000009"

cioè in parole povere metto in coda a temp x

Spero di essere stato chiaro...



Grazie mille per la risposta, ma ho scoperto che c'era un metodo molto più immediato e semplice: bastava
Codice sorgente - presumibilmente Plain Text

  1. numero.ToString("X2");


Grazie mille lo stesso :)


PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 435
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 21:20
Mercoledì, 15/08/2012
Ottimo:k:


Bonny
PM Quote