Comment puis-je encoder et de décoder une chaîne base64?
-
Comment puis-je retourner une chaîne encodée en base64 donné une chaîne de caractères?
-
Comment puis-je décode une chaîne encodée en base64 dans une chaîne de caractères?
- Si c'est un "partage de la connaissance" question et réponse, je pense que nous sommes à la recherche de quelque chose d'un peu plus en profondeur. Aussi une recherche rapide de virages jusqu': stackoverflow.com/a/7368168/419
- Toute chaîne de caractère est codé par un certain sous-jacent bits-schéma d'encodage. Soit ASCII, UTF7, UTF8 .... La question posée est, au mieux, incomplète.
- Demandez-vous avez-vous vraiment besoin de faire cela? Rappelez-vous base64 est principalement conçu pour la représentation binaire des données en ASCII, pour le stockage dans un champ char dans une base de données ou l'envoi par e-mail (où de nouvelles lignes pourrait être injecté). Voulez-vous vraiment prendre les données de caractères, de les convertir en octets, puis de le convertir en arrière à des données de caractère, cette fois illisible et sans préjuger de ce que le codage d'origine a été ?
- Pourquoi devrions-nous nous préoccuper de l'origine de l'encodage? On encode la chaîne dans les octets à l'aide de l'UTF8 représentation, ce qui peut représenter tous les caractères de la chaîne. Nous avons ensuite sérialiser des données et à l'autre extrémité, nous désérialiser des données et de nous reconstruire la même chaîne que nous avions à l'origine (objet de type string n'a pas les informations sur l'encodage utilisé de toute façon). Alors, pourquoi est-il tout problème lié à l'encodage utilisé? Nous pouvons le considérer comme un propriétaire manière de représenter les données sérialisées, qui ne devrait pas nous être intéressés de toute façon.
Vous devez vous connecter pour publier un commentaire.
Encoder
Décoder
NullReferenceException
dans votre propre code, pas de quelqu'un d'autre.Contract.Requires(plainText != null)
) et votre code est parfait 🙂atob()
(alpha-à-binaire) pour l'encodage etbtoa()
pour le décodageSystem.Convert.FromBase64String
a la manière d'encoder la chaîne null? Faire le nul de vérifier dans votre propre code de l'emporterait sur la norme de comportement, non? Le point ici est que, dans ce cas, nous n'avons pas vraiment utiliser (déréférencement) la chaîne donnée en paramètre, mais nous sommes plutôt juste de passer à l'implémentation sous-jacente, essentiellement habillage de certaines fonctionnalités, la création d'une méthode de convenance. Est-il judicieux de vérifier les valeurs null dans ce cas?Je suis le partage de mon application avec quelques fonctionnalités intéressantes:
Remarque: n'oubliez pas que l'utilisation de la Méthode d'Extension vous ont pour (!) importer l'espace de noms avec
using
mot clé (dans ce casusing MyApplication.Helpers.Encoding
).Code:
Exemple d'utilisation:
null
en cas denull
est un très comportements incohérents. Aucun autre .net API travaille avec des chaînes de fait.Sur la base des réponses par Andrew Fox et Cebe, je l'ai tourné autour et a fait d'eux chaîne extensions au lieu de Base64String extensions.
Une légère variation sur andrew.fox réponse, comme la chaîne à décoder pourrait ne pas être une bonne chaîne encodée en base64:
Utilisation
Pour ceux qui veulent tout simplement pour encoder/décoder personne base64 chiffres:
Il y a les différentes versions de Base64 qui sont en désaccord à propos de ce qu'il faut utiliser pour les chiffres 62 et 63, donc
DecodeBase64Digit
peut tolérer plusieurs de ces.