L'absolu de la façon la plus sûre pour convertir des octets d'une chaîne de caractères et à l'arrière est à utiliser en base64:
string base64 = Convert.ToBase64String(bytes);
byte[] bytes = Convert.FromBase64String(base64);
De cette façon, vous êtes assuré de ne pas devenir "invalide" unicode des séquences telles que la première moitié d'une paire de substitution sans la seconde moitié. Rien ne va décider de normaliser les données en quelque chose d'étrange (c'est de l'ASCII). Il n'y a aucune chance de l'aide de points de code qui ne sont pas inscrits dans Unicode, ou quelque chose comme ça. Oh, et vous pouvez couper et coller sans trop de peur, trop.
Oui, vous vous retrouvez avec 4 caractères pour chaque 3 octets, mais c'est un petit prix à payer pour la connaissance que vos données ne seront pas corrompus.