Oppure

Loading
17/04/12 11:58
RL
Salve a tutti leggendo l'esempio presente nel capitolo dedicata alla criptazione presente nella guida di VB.net mi sono imbattuto nel seguente codice:

    'I dati prodotti in output sono allocati in vettori di bytes,
    'ma le stringhe non sono il supporto più adatto per
    'visualizzarli, poiché vengono compresi anche
    'caratteri di controllo o null terminator. In ogni caso,
    'la stringa sarebbe o compromessa o illeggibile (non che
    'non lo debba essere). Questa funzione restituisce tutto
    'il vettore come rappresentazione esadecimale in stringa
    'rendendo più gradevole la vista del nostro
    'magnifico messaggio cifrato
    Public Function ToHex(ByVal Bytes() As Byte) As String
        Dim Result As New StringBuilder

        For I As Int32 = 0 To Bytes.Length - 1
            'Accoda alla stringa il codice in formato esadecimale,
            'facendo in modo che occupi sempre due posti, eventualmente
            'pareggiando con uno zero sulla sinistra
            Result.AppendFormat("{0:X2}", Bytes(I))
        Next

        Return Result.ToString
    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
aaa
18/04/12 17:55
Il Totem
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:
var bytes =
    Enumerable.Range(0, stringa.Length / 2)
    .Select(index => stringa.Substring(index * 2, 2))
    .Select(substr => (byte)Integer.Parse(substr, NumberStyles.AllowHexSpecifier))
    .ToArray()
aaa