python struct笔记

来源:互联网 发布:金元证券软件下载 编辑:程序博客网 时间:2024/06/07 17:45
http://firefish.blog.51cto.com/298258/112690
http://python.jobbole.com/81554/
https://zhidao.baidu.com/question/1369339939501292219.html
index += struct.calcsize('>IIII')

然后使用struc.unpack_from
'>IIII'是说使用大端法读取4个unsinged int32
然后读取一个图片测试是否读取成功
'>784B'的意思就是用大端法读取784个unsigned byte



http://blog.csdn.net/stonesharp/article/details/32685159
学习例子:
  1. # ref: http://blog.csdn.net/JGood/archive/2009/06/22/4290158.aspx
  2. import struct
  3. #pack - unpack
  4. print
  5. print '===== pack - unpack ====='
  6. str = struct.pack("ii"20400)
  7. print 'str:', str
  8. print 'len(str):', len(str) # len(str): 8
  9. a1, a2 = struct.unpack("ii", str)
  10. print "a1:", a1 # a1: 20
  11. print "a2:", a2 # a2: 400
  12. print 'struct.calcsize:', struct.calcsize("ii"# struct.calcsize: 8
  13. #unpack
  14. print
  15. print '===== unpack ====='
  16. string = 'test astring'
  17. format = '5s 4x 3s'
  18. print struct.unpack(format, string) # ('test ', 'ing')
  19. string = 'he is not very happy'
  20. format = '2s 1x 2s 5x 4s 1x 5s'
  21. print struct.unpack(format, string) # ('he', 'is', 'very', 'happy')
  22. #pack
  23. print
  24. print '===== pack ====='
  25. a = 20
  26. b = 400
  27. str = struct.pack("ii", a, b)
  28. print 'length:', len(str) #length: 8
  29. print str
  30. print repr(str) # '/x14/x00/x00/x00/x90/x01/x00/x00'
  31. #pack_into - unpack_from
  32. print
  33. print '===== pack_into - unpack_from ====='
  34. from ctypes import create_string_buffer
  35. buf = create_string_buffer(12)
  36. print repr(buf.raw)
  37. struct.pack_into("iii", buf, 012, -1)
  38. print repr(buf.raw)
  39. print struct.unpack_from("iii", buf, 0)