struct1_intbig.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. try:
  2. import ustruct as struct
  3. except:
  4. try:
  5. import struct
  6. except ImportError:
  7. print("SKIP")
  8. raise SystemExit
  9. # check maximum pack on 32-bit machine
  10. print(struct.pack("<I", 2**32 - 1))
  11. print(struct.pack("<I", 0xffffffff))
  12. # long long ints
  13. print(struct.pack("<Q", 1))
  14. print(struct.pack(">Q", 1))
  15. print(struct.pack("<Q", 2**64 - 1))
  16. print(struct.pack(">Q", 2**64 - 1))
  17. print(struct.pack("<Q", 0xffffffffffffffff))
  18. print(struct.pack(">Q", 0xffffffffffffffff))
  19. print(struct.pack("<q", -1))
  20. print(struct.pack(">q", -1))
  21. print(struct.pack("<Q", 1234567890123456789))
  22. print(struct.pack("<q", -1234567890123456789))
  23. print(struct.pack(">Q", 1234567890123456789))
  24. print(struct.pack(">q", -1234567890123456789))
  25. print(struct.unpack("<Q", b"\x12\x34\x56\x78\x90\x12\x34\x56"))
  26. print(struct.unpack(">Q", b"\x12\x34\x56\x78\x90\x12\x34\x56"))
  27. print(struct.unpack("<q", b"\x12\x34\x56\x78\x90\x12\x34\xf6"))
  28. print(struct.unpack(">q", b"\xf2\x34\x56\x78\x90\x12\x34\x56"))
  29. # check maximum unpack
  30. print(struct.unpack("<I", b"\xff\xff\xff\xff"))
  31. print(struct.unpack("<Q", b"\xff\xff\xff\xff\xff\xff\xff\xff"))
  32. # check small int overflow
  33. print(struct.unpack("<i", b'\xff\xff\xff\x7f'))
  34. print(struct.unpack("<q", b'\xff\xff\xff\xff\xff\xff\xff\x7f'))