我正在尝试在一些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
中的数据与temp中的数据完全匹配但在我序列化了类后,输出文件中的原始数据似乎不匹配,尽管有些部分看起来相似。我也试过在XmlWriter
上使用编码设置,但这经常以例外结束。
答案 0 :(得分:0)
“我不相信Base64输出适合我的解决方案。” o_O,嗯......那么这不是一个编程问题,而是一个哲学问题......
仍然,假设很多事情,例如数组Bytes
包含根据您的Foo
方法包含序列化实例save()
的文件的字节数据,请保留请注意char
表示Unicode字符,其大小为2字节...在将byte
转换为char
时,您要添加更多位...
哦编码,编码,编码......这就是为什么存在Base64 !!!