Hi Folks,

I don't seem to be getting the correct results. Consider the following test on 
the input hex 59 (0101 1001):

<xs:element name="Test_leastSignificantBitFirst">
    <xs:complexType>
        <xs:sequence
            dfdl:bitOrder="leastSignificantBitFirst"
            dfdl:lengthUnits="bits"
            dfdl:alignment="1"
            dfdl:alignmentUnits="bits"
            dfdl:representation="binary"
            dfdl:binaryNumberRep="binary">
            <xs:element name="Three-bits" type="unsignedint3" />
            <xs:element name="Two-bits" type="unsignedint2" />
            <xs:element name="Three-bits" type="unsignedint3" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

Running that results in this error message:

[error] Parse Error: Insufficient bits in data. Needed 2 bit(s).

Well, okay, so I commented out the Two-bits element. I re-ran it and got this 
error message:

[error] Parse Error: Insufficient bits in data. Needed 3 bit(s).

Okay, so I comment out the last two elements, and re-ran it. No error this 
time. But I did get a "Left over data" message. But the thing that really 
concerns me is the output that was generated:

<Test_leastSignificantBitFirst>
 <Three-bits>2</Three-bits>
</Test_leastSignificantBitFirst>

That's not correct. The value of <Three-bits> should be 1 (binary 001).  Right?

What am I doing wrong  and still not understanding?

/Roger

From: Beckerle, Mike <[email protected]>
Sent: Friday, February 15, 2019 11:45 AM
To: [email protected]
Subject: [EXT] Re: I don't understand bitOrder - please help!


This bitOrder feature is very thoroughly tested, so I suspect your tests are 
missing something important.



dfdl:lengthUnits="bits"

dfdl:alignment="1"

dfdl:alignmentUnits="bits"

dfdl:representation="binary"

dfdl:binaryNumberRep="binary"



Those properties are really essential.

________________________________
From: Costello, Roger L. <[email protected]<mailto:[email protected]>>
Sent: Friday, February 15, 2019 11:14:18 AM
To: [email protected]<mailto:[email protected]>
Subject: Re: I don't understand bitOrder - please help!

Thanks Steve and David!

To follow up on Steve's example ...

The input is: 01011001

With this element declaration:

<xs:element name="bit3"
                type="xs:int"
                dfdl:length="3"
                dfdl:bitOrder="mostSignificantBitFirst"... />

The value of <bit3> will be binary 010 (decimal 2), right?

With this element declaration:

<xs:element name="bit3"
                type="xs:int"
                dfdl:length="3"
                dfdl:bitOrder="leastSignificantBitFirst"... />

The value of <bit3> will be binary 001 (decimal 1), right?

That is not the behavior that I got with my tests.

/Roger


-----Original Message-----
From: Steve Lawrence <[email protected]<mailto:[email protected]>>
Sent: Friday, February 15, 2019 8:50 AM
To: [email protected]<mailto:[email protected]>; David Winant 
<[email protected]<mailto:[email protected]>>
Subject: Re: [EXT] Re: I don't understand bitOrder - please help!

That's correct. As a minimal example, let's imagine we had one byte of data 
like so, with bits labels A-H:

 Label: ABCDEFGH
  Bits: 01011001

Imagine we had an element like so:

  <xs:element name="bit3" type="xs:int" dfdl:length="3" ... />

So an integer with length 3 bits.

With bitOrder = MSBF, we would read the 3 most significant bits first.
So bits A-C and a value of 2 (010). If there was a following element, the next 
bit read would be bit D.

With bitOrdre = LSBF, we would read the 3 least significant bits first.
So bits F-H and a value of 1 (001). If there was a following element, the next 
bit read would be bit E.



On 2/15/19 8:33 AM, David Winant wrote:
> Roger,
>
> "Most significant" is implied as leftmost because that is the way we
> write numbers.  It means the bit associated with the highest power of
> 2, 2^7 in the case of a byte.
>
> What the bitOrder controls is whether the "first" bit is read from the
> right or read from the left.
>
> David
>
> On Fri, Feb 15, 2019 at 8:13 AM Costello, Roger L. <[email protected]
<mailto:[email protected]%20%0b>> <mailto:[email protected]>> wrote:
>
>     Hi Mike,____
>
>     __ __
>
>       * Least significant bit first or LSBF, the first bit is the rightmost
>         zero.____
>
>     __ __
>
>     So the most significant bit is the leftmost one.____
>
>     __ __
>
>       * Most significant bit first, MSBF, the first bit is the 1 on
> the left.____
>
>     __ __
>
>     So the least significant bit is the rightmost zero.____
>
>     __ __
>
>     Aren't they saying the same thing: The most significant bit is the 
> leftmost
>     one and the least significant bit if the rightmost zero. What's the
>     value/benefit/use-case of specifying bitOrder? ____
>
>     __ __
>
>     /Roger____
>
>     __ __
>
>     *From:* Beckerle, Mike <[email protected] 
> <mailto:[email protected]>>
>     *Sent:* Friday, February 15, 2019 8:02 AM
>     *To:* [email protected]<mailto:[email protected]> 
> <mailto:[email protected]>
>     *Subject:* [EXT] Re: I don't understand bitOrder - please
> help!____
>
>     __ __
>
>     Probably bit order should have been called bit numbering system.
> ____
>
>     It does nothing for whole bytes.____
>
>     It is only about which bits are considered to occupy which index
> positions. ____
>
>     So given byte with value 128, base 2 that is 80 hex or 10000000. So is the
>     "first" bit a 1 or a zero?____
>
>     Least significant bit first or LSBF, the first bit is the rightmost zero.
>     Most significant bit first, MSBF, the first bit is the 1 on the
> left. ____
>
>     Many format standards describe the bits numbering from right to left.
>
>
>
>
>     ____
>
>     Get Outlook for Android <https://aka.ms/ghei36>____
>
>     __ __
>
>
> ----------------------------------------------------------------------
> ----------
>
>     *From:*Costello, Roger L. <[email protected] <mailto:[email protected]>>
>     *Sent:* Friday, February 15, 2019 7:33:29 AM
>     *To:* [email protected]<mailto:[email protected]> 
> <mailto:[email protected]>
>     *Subject:* I don't understand bitOrder - please help! ____
>
>     ____
>
>     Hello DFDL community,____
>
>     ____
>
>     I've read the portions of the specification that discuss bitOrder.
> I'm lost.____
>
>     ____
>
>     I ran some tests to get a feel for the difference between
>     leastSignificantBitFirst and mostSignificantBitFirst. See below. Based on 
> my
>     tests, it appears there is no difference between leastSignificantBitFirst
>     and mostSignificantBitFirst. Would you explain what this bitOrder stuff is
>     all about, please?  /Roger____
>
>     ____
>
>     ____
>
>
>
> --
>
> David Winant |*Trident Systems Incorporated *Sr. Software Engineer,
> Integrated Systems Engineering Group
> 10201 Fairfax Boulevard
> <https://maps.google.com/?q=10201+Fairfax+Boulevard+%7C+Suite+300+%7C+
<https://maps.google.com/?q=10201+Fairfax+Boulevard+%7C+Suite+300+%7C+%0b>> 
Fairfax,+VA+22030&entry=gmail&source=g>  | Suite 300
> <https://maps.google.com/?q=10201+Fairfax+Boulevard+%7C+Suite+300+%7C+
<https://maps.google.com/?q=10201+Fairfax+Boulevard+%7C+Suite+300+%7C+%0b>> 
Fairfax,+VA+22030&entry=gmail&source=g>  | Fairfax, VA 22030
> <https://maps.google.com/?q=10201+Fairfax+Boulevard+%7C+Suite+300+%7C+
<https://maps.google.com/?q=10201+Fairfax+Boulevard+%7C+Suite+300+%7C+%0b>> 
Fairfax,+VA+22030&entry=gmail&source=g>
>
> d: 703.267.6014 | c: 304.237.4960 | f: 703.359.6226
> e: [email protected]<mailto:[email protected]> 
> <mailto:[email protected]>  |
> www.tridsys.com<http://www.tridsys.com> <http://www.tridsys.com/>
>
> **
>
> 143x59-trident-logo-web-small
>
> /Notice: The information contained in this email message is considered
> confidential and proprietary to the sender and is intended solely for
> review and use by the named recipient.  Any unauthorized review, use
> or distribution is strictly prohibited. If you have received this
> message in error, please advise the sender by reply email and delete
> the message./
>

Reply via email to