Skip to content

endianess of resulting array of bytes #21

Open

Description

@alepinio

With the 8.11.1 I'm getting

>>> bitstruct.pack('u8u8u8u8<', 1, 2, 3, 4)
b'\x01\x02\x03\x04'
>>> bitstruct.pack('u8u8u8u8>', 1, 2, 3, 4)
b'\x01\x02\x03\x04'

Is this OK? According to the documentation, I was expecting different byte orderings when using suffixes < and >.

THX, Alejandro

PS: great work!

Activity

  1. besser82 commented on Nov 20, 2021

    @besser82

    The recent v8.10.2 also isn't working on big-endian architectures like s390x. So there must be some problems with the actual c-interface implementation:

    ======================================================================
    FAIL: test_pack (tests.test_c.CTest)
    Pack values.
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/builddir/build/BUILD/bitstruct-8.12.1/tests/test_c.py", line 97, in test_pack
        self.assertEqual(packed, b'\x3c\x00')
    AssertionError: b'\x00<' != b'<\x00'
    ======================================================================
    FAIL: test_unpack (tests.test_c.CTest)
    Unpack values.
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/builddir/build/BUILD/bitstruct-8.12.1/tests/test_c.py", line 187, in test_unpack
        self.assertEqual(unpacked, (1.0, ))
    AssertionError: Tuples differ: (3.5762786865234375e-06,) != (1.0,)
    First differing element 0:
    3.5762786865234375e-06
    1.0
    - (3.5762786865234375e-06,)
    + (1.0,)
    ----------------------------------------------------------------------
    Ran 51 tests in 0.006s
    FAILED (failures=2)
    
  2. lemenkov commented on Feb 16, 2026

    @lemenkov
    Contributor

    The recent v8.10.2 also isn't working on big-endian architectures like s390x. So there must be some problems with the actual c-interface implementation:

    ======================================================================
    FAIL: test_pack (tests.test_c.CTest)
    Pack values.
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/builddir/build/BUILD/bitstruct-8.12.1/tests/test_c.py", line 97, in test_pack
        self.assertEqual(packed, b'\x3c\x00')
    AssertionError: b'\x00<' != b'<\x00'
    ======================================================================
    FAIL: test_unpack (tests.test_c.CTest)
    Unpack values.
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/builddir/build/BUILD/bitstruct-8.12.1/tests/test_c.py", line 187, in test_unpack
        self.assertEqual(unpacked, (1.0, ))
    AssertionError: Tuples differ: (3.5762786865234375e-06,) != (1.0,)
    First differing element 0:
    3.5762786865234375e-06
    1.0
    - (3.5762786865234375e-06,)
    + (1.0,)
    ----------------------------------------------------------------------
    Ran 51 tests in 0.006s
    FAILED (failures=2)
    

    I guess this one fixed in my PR #55.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions