9
votes

F #: Conversion d'une chaîne en une gamme d'octets

J'écris un simple utilitaire de cryptage / de déchiffrement RC4 comme premier projet. Je suis coincé à essayer de convertir la chaîne donnée en une gamme d'octets qui peuvent ensuite être manipulés par l'algorithme de base. Comment convertissez-vous une chaîne en une gamme d'octets dans Fun fonctionnel F #? XXX PRE>

FYI en C # Il ressemble à: P>

    public static string Encrypt(string decrypted)
    {
        byte[] bytes = new byte[decrypted.Length];

        for (int i = 0; i < decrypted.Length; ++i)
            bytes[i] = (byte)decrypted[i];

        Algorithm(ref bytes);

        return BitConverter.ToString(bytes).Replace("-", "").ToLower();
    }


0 commentaires

3 Réponses :


11
votes

Bien que vous puissiez écrire votre propre fonction pour faire le travail, il est préférable de coller avec les méthodes intégrées .NET:

chaîne à octets: xxx

Octets à la chaîne: xxx


1 commentaires

C'était le premier que j'avais besoin. Text.encoding.ascii.getbytes (déchiffré)



1
votes

Vous pouvez faire une traduction directe xxx


1 commentaires

Il est utile de voir cette traduction mais j'essaie d'apprendre la manière fonctionnelle de faire des choses. Je ne veux pas écrire F # avec un "accent" C #.



3
votes

Selon la demande de Gradbot, le code final ressemble à:

1) Je n'aime pas les moulages à des octets p>

2) La fonction principale d'algorithme semble très non fonctionnelle p>

La critique constructive est la bienvenue. p>

rc4.fs p> xxx pré>

stringutils.fs p> xxx pré>

MISCUILLS.FS P>

#light

let Swap (left : 'a byref) (right : 'a byref) =
    let temp = left
    left  <- right
    right <- temp


0 commentaires