[ 
https://issues.apache.org/jira/browse/DAFFODIL-2293?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17066621#comment-17066621
 ] 

Mike Beckerle commented on DAFFODIL-2293:
-----------------------------------------

Here's a tutorial on bit order that may help:   
[https://daffodil.apache.org/tutorials/bitorder.tutorial.tdml.xml]

Your tests don't work differently because bit order only matters when you are 
looking at fewer than all the bits of a byte. 

I would suggest that you need tests that misalign your 8-bit characters so that 
they aren't always being parsed from nice byte boundaries. Then you will see 
the difference.

This will be much easier to deal with from TDML tests than the basic unit tests 
you have here.  However, if you want to enhance these tests to decode/encode 
not on byte boundaries, it's kind of asymetric between decoder tests and 
encoder tests.

For encoder tests, probably easiest to just encode a "1" character in charset 
"X-DFDL-BITS-MSBF" (for the MSBF tests) first before then encoding your 8-bit 
characters.

This will place a "1" bit into the MSB of the first byte, consuming the "1" 
character from the char buffer. Each of your 8-bit characters will then occupy 
7 bits of one byte and 1 bit of the subsequent byte.

For decoder tests it's a little bit simpler. You can add a bit to the test 
data, then just skip that bit with dis.skipBits(1, finfo). That will position 
the data input stream after the first bit, so all the characters being decoded 
will occupy 7 bits of one byte, and 1 bit of the next.

 

 

 

> Too many bits in xs:string
> --------------------------
>
>                 Key: DAFFODIL-2293
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2293
>             Project: Daffodil
>          Issue Type: Question
>            Reporter: Alexander Deutschmann
>            Priority: Major
>
> Hello everyone,
> i have the following schema:
> {code:xml}
> <xs:complexType name="statusReportDetails">
>               <xs:sequence>
>                       <xs:element name="state" type="abc:stateenum" 
> dfdl:length="4" />
>                       <xs:element name="indicators" type="abc:indicators"  
> dfdl:length="16" />
>                       <xs:element name="v" type="v" dfdl:length="10" />
>                       <xs:element name="driverId" type="xs:string" 
> dfdl:lengthKind="explicit" dfdl:length="128" dfdl:alignment="8" />
>               </xs:sequence>
>       </xs:complexType>
> {code}
> And the related bitstream:
> {code:java}
> 0101 -> Enum
> 0000110000000001 -> indicators
> 0001100100 -> v
> 0000110001001100010011000100110001001100100011001000110010001100100011001100110011001100110011001100110100001101000011010000110100
>  -> driverId
> {code}
> The driverId has 130 bits and not the 128. bits which is defined in the 
> schema. 
> My question is where comes the first two bits ? I know it is an configuration 
> mistake or something like that.
> I hope someone can help me.
> Thank you.
> Alex



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to