Message140279
| Author |
vstinner |
| Recipients |
Alexander.Belopolsky, Jake.Coffman, amaury.forgeotdarc, castironpi, terry.reedy, theller, vladris, vstinner |
| Date |
2011年07月13日.16:05:38 |
| SpamBayes Score |
0.00047321164 |
| Marked as misclassified |
No |
| Message-id |
<1310573138.87.0.941834501524.issue4376@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
I don't like your test because it depends on system endian:
+ if sys.byteorder == "little":
+ struct.menu.spam = 0x000000FF
+ else:
+ struct.menu.spam = 0xFF000000
I would prefer a test creating a structure from a byte string. Something like:
---------------------------
import ctypes
class Nested(ctypes.BigEndianStructure):
_fields_ = (
('x', ctypes.c_uint32),
('y', ctypes.c_uint32),
)
class TestStruct(ctypes.BigEndianStructure):
_fields_ = (
('point', Nested),
)
data = b'0円0円0円1円0円0円0円2円'
assert len(data) == ctypes.sizeof(TestStruct)
obj = ctypes.cast(data, ctypes.POINTER(TestStruct))[0]
assert obj.point.x == 1
assert obj.point.y == 2
---------------------------
Use b'1円0円0円0円2円0円0円0円' for little endian. |
|