XmlSerializer
andを使用して double 値を含むオブジェクトをシリアル化/逆シリアル化しますStreamWriter
。生成され.xml
たファイルでは、double 値が 10 進数値として格納されていることがわかります。10 進数ではなく 16 進数で double を生成する方法はありますか?
いくつかのコード。
シリアライズするクラス
[Serializable()]
public class Variable
{
public int shift;
public int size;
public int min;
public int max;
public string name;
public string del;
public Variable()
{
shift = 26;
size = 0;
min = 0;
max = 0;
name = "noname";
del = "-";
}
}
シリアライザクラス
/// <summary>
/// class to serialize/deserialize another class
/// </summary>
public class serializator
{
private serializator()
{
}
/// <summary>
/// serializator
/// </summary>
/// <param name="fname">filename to serialize</param>
/// <param name="z">object to serialize</param>
static public void ser(string fname, object z)
{
System.Type st = z.GetType();
XmlSerializer xSer = new XmlSerializer(st);
StreamWriter sWri = new StreamWriter(fname);
xSer.Serialize(sWri, z);
sWri.Close();
}
/// <summary>
/// deserializator
/// usage: fooclass fc = (fooclass)serializator.dser("fname.xml", fc);
/// </summary>
/// <param name="fname">filename to dser</param>
/// <param name="z">object to grab type</param>
/// <returns></returns>
static public object dser(string fname, object z)
{
if (fname != null && fname != "" && z != null)
{
try
{
object rez = new object();
XmlSerializer xSer = new XmlSerializer(z.GetType());
StreamReader sRea = new StreamReader(fname);
rez = xSer.Deserialize(sRea);
sRea.Close();
return rez;
}
catch(Exception e)
{
System.Windows.Forms.MessageBox.Show("config ouch\r\n"+e.Message);
return null;
}
}
else
{
return null;
}
}
}
メインプログラムのコード
Variable v = new Variable();
serializator.ser("foo.xml", v);
結果のxmlファイル
<?xml version="1.0" encoding="utf-8"?>
<Variable>
<shift>26</shift>
<size>0</size>
<min>0</min>
<max>0</max>
<name>noname</name>
<del>-</del>
</Variable>
<shift>1A</shift>
この特定のケースでは、 or の<shift>0x1A</shift>
代わりに見たいです<shift>26</shift>
。可能ですか?