bitstruct icon indicating copy to clipboard operation
bitstruct copied to clipboard

endianess of resulting array of bytes

Open alepinio opened this issue 4 years ago • 1 comments

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!

alepinio avatar Jun 01 '21 04:06 alepinio

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)

besser82 avatar Nov 20 '21 17:11 besser82