2013-10-10 1 views
1

8 비트 숫자가 있는데, 그 안에있는 모든 비트는 일부 데이터를 나타냅니다. 예를 들어XML은 XML 파일의 비트를 나타냅니다.

:

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

비트에 포함 된 데이터 또는 비트 맵핑을 '의미'에 저장하려고합니까? – Gusdor

+0

두 번째 옵션. – zvi

답변

0

당신이 (나는 분명 아니었다면 미안) 내가 무엇을 요구 이해 확실하지 : (I 레지스터의 큰 가지를 표현하려는, 그래서 모든 레지스터는 다를 수있다 = 비트 별도의 XML 형태를 가진 다양하게).

어쨌든이 나는거야 (모든 필드가 레지스터에 얼마나 많은 비트 선언) 할 것입니다 :

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

here에서 아이디어를 기준으로합니다.

어쨌든 - 고마워요.

0

xml이 여기에서 가장 마지막으로 우려하는 부분입니다. 문제는 데이터를 모델링하는 방법입니다. 비트 표현이 괜찮 으면 실제 숫자 (예 : 01101100)를 써야합니다. 반대로, 당신의 질문이 함축하는 것처럼 보이면, 당신은 그것을 표현하는 더 구조화 된 방식을 원한다. 우선, 구조를 생각해야한다. 예를 들어

수, 표현하는 8 개 비트를 필요로하는 그럴듯한 구조 (논리적)를 (필자는, 예를 들어 C를 사용하고, 어떤 언어를 할 것) :로 번역 될 수

struct Flags{ 
    struct Axis{ 
     bool enabled; 
     bool present; 
    }; 
    Axis axes[3]; 

    bool invertAllDirections; 
    bool movementsEnabled; 
}; 

<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> 
0

C 나 XML이 비트의 본질을 반영하지 않으므로 그 유용성은 표현의 목적에 달려 있습니다. C에서 bool은 일반적으로 0 또는 0이 아닌 int이며 유니온 멤버 인 경우 int varname : 1; 은 패킹 (#pragma pack 1) 및 엔디 언스 (#if __BYTE_ORDER == __BIG_ENDIAN)의 복잡성을 도입하면서 특성을 정확하게 반영합니다. 성취하고자하는 것과 예를 들어 데이터가 저수준 메시지의 일부이고 네트워크 바이트 순서 (NBO)가 가정되는 경우와 같이 선택한 표현이 그 목적에 적합한 지 여부를 알고 있어야합니다.