XML表示XML文件中的位

时间:2013-10-10 20:06:19

标签: xml xml-parsing bit-manipulation bit

我有一个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>

谢谢!

3 个答案:

答案 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)。