我有一个8位数字,它的每一位代表一些数据。
例如:
01101100
第1位(0
) - 表示某个标志,第2位(1
) - 另一个标志等。
我想将所有数据保存在XML文件中,最好的方法是什么?
这就是我现在所拥有的:
<bit1 Description="Y axis"> <x1> Y axis enabled</x1> <x0> Y axis disabled</x0> </bit1> <bit0 Description="X axis"> <x1> X axis enabled</x1> <x0> X axis disabled</x0> </bit0>
谢谢!
答案 0 :(得分:0)
我想说xml是最后关注的问题。问题是你想如何建模数据。如果您对位表示没问题,则应该只写下实际数字(在您的示例中为01101100)。如果相反,正如你的问题似乎暗示,你想要一种更有条理的方式来表示它,你首先应该想到一个结构。
例如(我使用c作为示例,任何语言都可以),需要8位表示的合理结构(逻辑上)可以是:
struct Flags{
struct Axis{
bool enabled;
bool present;
};
Axis axes[3];
bool invertAllDirections;
bool movementsEnabled;
};
可以翻译成具有以下形式的xml:
<Flags>
<Axes>
<X>
<Enabled>False</Enabled>
<Present>True</Present>
</X>
<Y>
<Enabled>True</Enabled>
<Present>False</Present>
</Y>
<Z>
<Enabled>True</Enabled>
<Present>True</Present>
</Z>
</Axes>
<invertAllDirections>False</invertAllDirections>
<movementsEnabled>False</movementsEnabled>
</Flags>
答案 1 :(得分:0)
不确定你理解我的问题(对不起,如果我不清楚):我想代表一大类寄存器,所以每个寄存器可以有所不同(=不同的位)。
无论如何这就是我要做的事情(声明寄存器中的每个字段有多少位):
<field>
<name>register1</name>
<bitOffset>14</bitOffset>
<bitWidth>18</bitWidth>
</field>
基于here的想法。
无论如何 - 谢谢。
答案 2 :(得分:0)
在我看来,C和XML都没有反映数据的按位性质,因此它的效用取决于表示的目的是什么。在C中,bool通常是一个0或非零的int,而union成员: int varname:1; 在介绍包装的复杂性(#pragma pack 1)和Endianness(#if __BYTE_ORDER == __BIG_ENDIAN)时,会准确反映其性质。只要知道你想要完成什么以及所选择的表示是否足以满足这个目的,例如,如果数据是低级别消息的一部分并且假定网络字节顺序(NBO)。