1

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

谢谢!

4

3 回答 3

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>
于 2013-11-05T13:56:56.460 回答
0

不确定你是否理解我的问题(对不起,如果我不清楚):我想代表大量的寄存器,所以每个寄存器都可以不同(=不同的位分开)。

无论如何,这就是我要做的(声明寄存器中每个字段有多少位):

<field>
      <name>register1</name>
      <bitOffset>14</bitOffset>
      <bitWidth>18</bitWidth> 
</field>

基于这里的想法。

总之感谢。

于 2013-11-06T07:59:37.657 回答
0

在我看来,C 和 XML 都没有反映数据的按位性质,因此它的实用性取决于表示的目的是什么。在 C 中,bool 通常是一个 0 或非零的 int,而联合成员: int varname : 1; 在引入打包 (#pragma pack 1) 和字节序 (#if __BYTE_ORDER == __BIG_ENDIAN) 的复杂性时,将准确反映其性质。请注意您想要完成什么以及选择的表示是否足以满足该目的,例如,如果数据是低级消息的一部分并且假定网络字节顺序 (NBO)。

于 2017-09-05T13:11:46.817 回答