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 #? 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();
}
3 Réponses :
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: p> Octets à la chaîne: p>
C'était le premier que j'avais besoin. Text.encoding.ascii.getbytes (déchiffré)
Vous pouvez faire une traduction directe
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 #.
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> stringutils.fs p> MISCUILLS.FS P> #light
let Swap (left : 'a byref) (right : 'a byref) =
let temp = left
left <- right
right <- temp