| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- try:
- import ustruct as struct
- except:
- try:
- import struct
- except ImportError:
- print("SKIP")
- raise SystemExit
- print(struct.calcsize("<bI"))
- print(struct.unpack("<bI", b"\x80\0\0\x01\0"))
- print(struct.calcsize(">bI"))
- print(struct.unpack(">bI", b"\x80\0\0\x01\0"))
- # 32-bit little-endian specific
- #print(struct.unpack("bI", b"\x80\xaa\x55\xaa\0\0\x01\0"))
- print(struct.pack("<l", 1))
- print(struct.pack(">l", 1))
- print(struct.pack("<i", 1))
- print(struct.pack(">i", 1))
- print(struct.pack("<h", 1))
- print(struct.pack(">h", 1))
- print(struct.pack("<b", 1))
- print(struct.pack(">b", 1))
- print(struct.pack("<bI", -128, 256))
- print(struct.pack(">bI", -128, 256))
- print(struct.calcsize("100sI"))
- print(struct.calcsize("97sI"))
- print(struct.unpack("<6sH", b"foo\0\0\0\x12\x34"))
- print(struct.pack("<6sH", b"foo", 10000))
- s = struct.pack("BHBI", 10, 100, 200, 300)
- v = struct.unpack("BHBI", s)
- print(v == (10, 100, 200, 300))
- # network byte order
- print(struct.pack('!i', 123))
- # check that we get an error if the buffer is too small
- try:
- struct.unpack('I', b'\x00\x00\x00')
- except:
- print('struct.error')
- # first arg must be a string
- try:
- struct.pack(1, 2)
- except TypeError:
- print('TypeError')
- # make sure that unknown types are detected
- try:
- struct.pack("z", 1)
- except:
- print("Unknown type")
- # Initially repitition counters were supported only for strings,
- # but later were implemented for all.
- print(struct.unpack("<3B2h", b"foo\x12\x34\xff\xff"))
- print(struct.pack("<3B", 1, 2, 3))
- # pack_into
- buf = bytearray(b'>>>123<<<')
- struct.pack_into('<bbb', buf, 3, 0x41, 0x42, 0x43)
- print(buf)
- struct.pack_into('<bbb', buf, -6, 0x44, 0x45, 0x46)
- print(buf)
- # check that we get an error if the buffer is too small
- try:
- struct.pack_into('I', bytearray(1), 0, 0)
- except:
- print('struct.error')
- try:
- struct.pack_into('<bbb', buf, 7, 0x41, 0x42, 0x43)
- except:
- print('struct.error')
- try:
- struct.pack_into('<bbb', buf, -10, 0x41, 0x42, 0x43)
- except:
- print('struct.error')
- # unpack_from
- buf = b'0123456789'
- print(struct.unpack_from('<b', buf, 4))
- print(struct.unpack_from('<b', buf, -4))
- try:
- print(struct.unpack_from('<b', buf, 10))
- except:
- print('struct.error')
- try:
- print(struct.unpack_from('<b', buf, -11))
- except:
- print('struct.error')
|