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 - AppendFormat
Forum - C# / VB.NET - AppendFormat

Avatar
RL (Normal User)
Newbie


Messaggi: 1
Iscritto: 17/04/2012

Segnala al moderatore
Postato alle 13:58
Martedì, 17/04/2012
Salve a tutti leggendo l'esempio presente nel capitolo dedicata alla criptazione presente nella guida di VB.net mi sono imbattuto nel seguente codice:

Codice sorgente - presumibilmente VB.NET

  1. 'I dati prodotti in output sono allocati in vettori di bytes,
  2.     'ma le stringhe non sono il supporto più adatto per
  3.     'visualizzarli, poiché vengono compresi anche
  4.     'caratteri di controllo o null terminator. In ogni caso,
  5.     'la stringa sarebbe o compromessa o illeggibile (non che
  6.     'non lo debba essere). Questa funzione restituisce tutto
  7.     'il vettore come rappresentazione esadecimale in stringa
  8.     'rendendo più gradevole la vista del nostro
  9.     'magnifico messaggio cifrato
  10.     Public Function ToHex(ByVal Bytes() As Byte) As String
  11.         Dim Result As New StringBuilder
  12.  
  13.         For I As Int32 = 0 To Bytes.Length - 1
  14.             'Accoda alla stringa il codice in formato esadecimale,
  15.             'facendo in modo che occupi sempre due posti, eventualmente
  16.             'pareggiando con uno zero sulla sinistra
  17.             Result.AppendFormat("{0:X2}", Bytes(I))
  18.         Next
  19.  
  20.         Return Result.ToString
  21.     End Function



Non riesco a capire il codice scritto tra le parentesi graffe.
Vorrei sapere inoltre come faccio a scrivere l'array di byte a partire dalla stringa di valori esadecimali.
Grazie per qualsiasi aiuto

RL

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
1
Down
V
Segnala al moderatore
Postato alle 19:55
Mercoledì, 18/04/2012
Esattamente quello che c'è scritto nel commento. Essendo una stringa di formato, {n} indica l'n-esimo parametro passato dopo la stringa stessa. :X specifica di formattare l'output in esadecimale (in upper case). Il 2 impone una lunghezza fissa di due caratteri alla stringa formattata.

Per passare dalla stringa all'array:
Codice sorgente - presumibilmente C# / VB.NET

  1. var bytes =
  2.     Enumerable.Range(0, stringa.Length / 2)
  3.     .Select(index => stringa.Substring(index * 2, 2))
  4.     .Select(substr => (byte)Integer.Parse(substr, NumberStyles.AllowHexSpecifier))
  5.     .ToArray()



"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM