Convertir une chaîne binaire de représentation d'un tableau d'octets
Comment convertir une chaîne telle que "01110100011001010111001101110100" à un tableau d'octets ensuite utilisé le Fichier.WriteAllBytes tels que la chaîne binaire est le binaire du fichier. Dans ce cas, il serait du texte "test".
- Voici un bon endroit pour commencer: msdn.microsoft.com/en-us/library/system.convert_methods.aspx
Vous devez vous connecter pour publier un commentaire.
Dans le cas où vous n'avez pas ce LINQ fétiche, si commun ces derniers temps, vous pouvez essayer de la façon normale
LINQ est grande, mais il y a des limites.
input.Length / 8
n'est pas correctement arrondie, si la valeur de type double est de 1,75, numOfBytes est 1. Méfiez-vous de cela!Vous pourriez commencer par diviser la chaîne en une séquence de 8-les chaînes de caractères, puis de convertir ces chaînes d'octets, et finit par écrire les octets d'un fichier
EDIT: voici une autre façon de diviser la chaîne en 8 caractères morceaux, peut-être un peu plus simple :
Si vous savez que la longueur de la chaîne est un multiple de 8, vous pouvez la rendre encore plus simple :
Un peu en retard, mais voici mes 2 cents:
En réalité la réponse par @Maciej n'est pas correct. Comme @Phate01 remarqué la
numOfBytes
est correct uniquement pour l'entrée de la longueur qui est une puissance de8
. La deuxième chose, c'est que le tableau d'octets doit être rempli à partirn
à0
index non l'inverse. Voici l'exemple de code:Ce qui peut être amélioré pour se débarrasser de la
if
statetment mais dans cette forme, il est plus compréhensible.Autres réponses vous, mais juste pour le fun, j'ai écrit le contraire. Va de la corde à l'ascii représentation binaire:
StringBuilder
, mais si vous avez"01110100011001010111001101110100"
que d'une entrée, désolé, c'est une chaîne de caractères, pas unbyte[]
, jusqu'à ce que vous séparez en blocs de 8.