0

一部のXMLノードに生のバイトデータを出力しようとしています。 私は、出力が私のソリューションに適して
いるとは思いません。Base64

私の現在の仕事は次のとおりです。

ファイルに保存するには:

(コンテナクラスFooのメンバー関数)

public void save(String file)
{
    XmlWriterSettings settings = new XmlWriterSettings();

    XmlSerializer serializer = new XmlSerializer(typeof(Foo));
    XmlWriter writer = XmlWriter.Create(file, settings);
    serializer.Serialize(writer, this);
}

クラスをシリアル化するには(クラスはIXmlSerializableから継承されます):

(のデータBytesは生データです)

public void WriteXml(XmlWriter writer)
{
    char[] temp = new char[Bytes.Length];
    for (int i = 0; i < temp.Length; i++)
    {
        int n = (int)Bytes[i];
        temp[i] = (char)n;
    }
    writer.WriteRaw(temp, 0, temp.Length);
}

この操作の後、のデータは一時のデータと完全に一致すると確信していますBytesが、クラスをシリアル化した後、出力ファイルの生データは一致していないようですが、一部は似ています。のエンコード設定を試してみましたXmlWriterが、例外が発生することがよくあります。

4

1 に答える 1

0

「Base64 出力が私のソリューションに適しているとは思えません。」o_O そうですね...では、これはプログラミングの問題ではなく、哲学的な問題です...

それでも、配列には、メソッドに従ってBytesのシリアル化されたインスタンスを含むファイルのバイトデータが含まれているなど、多くのことが想定されていますが、これは Unicode 文字を表し、そのサイズは 2 バイトであることに注意してください...あなたはを...に変換するときにビットを追加するFoosave()charbytechar

ああ、エンコーディング、エンコーディング、エンコーディング...それがBase64が存在する理由です!!!

于 2012-11-03T05:19:38.837 に答える