des valeurs de chaîne en tableau d'octets sans avoir à les convertir

Je suis en train de mettre les valeurs d'une chaîne en un tableau d'octets avec la modification de la personnages. C'est parce que la chaîne est en fait une représentation en octets des données.

L'objectif est de déplacer la chaîne d'entrée dans un tableau d'octets et puis convertir le tableau d'octets à l'aide de:

string result = System.Text.Encoding.UTF8.GetString(data);

J'espère que quelqu'un peut m'aider même si je sais que ce n'est pas une très bonne description.

EDIT:
Et je devrais peut-être expliquer que ce que je travail sur un windows simple formulaire avec une zone de texte où les utilisateurs peuvent copier les données encodées, et ensuite cliquez sur l'aperçu pour voir les données décodées.

EDIT:
Un peu plus de code:
(inputText est une zone de texte)

    private void button1_Click(object sender, EventArgs e)
    {
        string inputString = this.inputText.Text;
        byte[] input = new byte[inputString.Length];
        for (int i = 0; i < inputString.Length; i++)
        {
            input[i] = inputString[i];
        }
        string output = base64Decode(input);
        this.inputText.Text = "";
        this.inputText.Text = output;
    }

Cette est une partie d'un formulaire windows, et il comprend une zone de texte enrichi. Ce code ne marche pas car il l'habitude de me laisser convertir type char, byte.
Mais si je change la ligne :

    private void button1_Click(object sender, EventArgs e)
    {
        string inputString = this.inputText.Text;
        byte[] input = new byte[inputString.Length];
        for (int i = 0; i < inputString.Length; i++)
        {
            input[i] = (byte)inputString[i];
        }
        string output = base64Decode(input);
        this.inputText.Text = "";
        this.inputText.Text = output;
    }

Il encode la valeur et je ne veux pas que. J'espère que c'est ce qui explique un peu mieux ce que j'essaie de faire.

EDIT: Le base64Decode fonction:

    public string base64Decode(byte[] data)
    {
        try
        {
            string result = System.Text.Encoding.UTF8.GetString(data);
            return result;
        }
        catch (Exception e)
        {
            throw new Exception("Error in base64Decode" + e.Message);
        }
    }

La chaîne n'est pas codé à l'aide de base64 juste pour être clair. C'est juste une mauvaise appellation sur mon nom.

Remarque c'est juste une ligne de saisie.

Je l'ai. Le problème était que j'étais toujours en essayant de décoder le format est mauvais. Je me sens très stupide parce que quand j'ai posté l'exemple de l'entrée, j'ai vu ce devait être hex et c'est donc à partir de là, c'était facile. J'ai utilisé ce site pour référence:
http://msdn.microsoft.com/en-us/library/bb311038.aspx

Mon code:

     public string[] getHexValues(string s)
     {
        int j = 0;
        string[] hex = new String[s.Length/2];
        for (int i = 0; i < s.Length-2; i += 2)
        {
            string temp = s.Substring(i, 2);
            this.inputText.Text = temp;
            if (temp.Equals("0x")) ;
            else
            {
                hex[j] = temp;
                j++;
            }
        }
        return hex;
    }

    public string convertFromHex(string[] hex)
    {
        string result = null;
        for (int i = 0; i < hex.Length; i++)
        {
            int value = Convert.ToInt32(hex[i], 16);
            result += Char.ConvertFromUtf32(value);
        }
        return result;
    }

Je me sens assez faible pour l'instant, mais merci à tous ceux qui ont aidé, en particulier par @Jon Skeet.

  • Qu'entendez-vous par "la chaîne est en fait une représentation en octets des données"? Une chaîne est une séquence de caractères. Comment était vos données binaires d'origine converti en une chaîne de caractères?
  • si vous souhaitez activer un String dans un Byte[] et puis de nouveau? Est-ce devoirs?
  • BTW, BitConverter a méthode GetBytes qui peut convertir char en byte[]. Vous pouvez l'utiliser si vous n'aimez pas l'encodage pour une raison quelconque. Aussi il ne nécessite pas de passage Encoding depuis tous les .Net chaîne UTF chaînes de toute façon.
  • Skeet. La chaîne est stockée dans une base de données. Lorsque la chaîne est envoyée en, il est converti en un tableau d'octets, mais la base de données enregistre sous la forme d'une chaîne ou de type varchar. Alors quand j'ai récupérer les données, il est une chaîne, mais j'ai besoin d'un tableau d'octets, de sorte que je peux utiliser la conversion indiquée ci-dessus. Vous pouvez penser à elle en tant que valeurs d'un tableau d'octets en une chaîne de caractères
  • Mais quelle était l'origine des données? Du texte ou des données binaires? C'est vraiment pas clair où ces données proviennent de ou de ce que vous essayez de faire. Pourquoi avez-vous besoin d'un tableau d'octets lors de la conversion, vous avez montré que vous récupère une chaîne de caractères?
  • Non ce n'est pas de devoirs, merci de demander. Le problème est que j'ai le byte[], seulement il est dans un format de chaîne de caractères, donc j'ai besoin pour obtenir le contenu de la chaîne en un tableau d'octets sans encodage des données. Je suis désolé je ne peux pas être plus clair.
  • Skeet. Les données sont codées et j'ai besoin de le décoder. L'entrée est une chaîne codée. Désolé, je suis très mal à expliquer ce que je veux dire.
  • chaîne codée" n'explique pas comment c'est codé. Base64? Hex? Il a été à l'origine des données de texte ou binaire? Tout cela est très important.
  • L'un d'expliquer en publiant un peu plus de code. Nous parlons tous de C#. Et mention Db classes par nom.
  • Skeet. Je n'ai pas le code source pour savoir comment il est codé. Mes collègues sont assez sûrs que c'est codé à l'aide du Système.Texte.L'encodage.UTF8.GetBytes(chaîne de caractères). Mais l'homme qui a fait cela n'est plus ici et je n'ai pas été en mesure de trouver le code source.
  • Donc, qu'est-ce que les données d'origine? Si ce n'est pas du texte, alors il faut absolument ne pas utiliser quelque chose comme de l'Encodage.UTF8. Votre exemple de code utilise en Base64 est-il réellement en base64 de données? Si vous pouviez poster un exemple de texte, qui pourrait l'aider...
  • Skeet. Le nom de la fonction est trompeuse. Au début, j'avais dit que j'étais le décodage en base64, chaîne et c'est pourquoi il appelé qui. Ive ajout de la fonction pour le post original.
  • Wow, c'est peut-être le pire nom de la méthode que j'ai jamais vu (et la mise en œuvre est assez horrible trop). Si c'est censé être l'encodage des données binaires (par exemple, des images), puis, fondamentalement, vous êtes déjà de perdre des données.
  • Skeet. Je connais le nom, Im juste essayer d'obtenir ce travail en premier lieu. J'ai lu le thread où vous suggérons d'utiliser Convertir.ToBase64String mais qui ne fonctionne pas dans mon cas. Pourriez-vous me diriger dans la bonne direction
  • Pas vraiment, sans plus d'informations. Si vous ne pouvez pas changer ce qui est écrit dans la base de données, et il est écrit d'une manière qui perd de l'information, vous êtes foutu. Vous n'avez toujours pas expliqué si les données qu'il essaie de représenter véritablement les données binaires.
  • Skeet. Comme vous le voyez, j'ai découvert que les données en HEXADÉCIMAL et la conversion s'est avéré pour être assez facile. Ive édité mon post original et posté ma solution. Merci à tous pour votre aide.

InformationsquelleAutor Gisli | 2011-06-06