Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. Python Cheat Sheets - Modules
  2. =============================
  3.  
  4. by Victor Payno
  5. ---------------
  6.  
  7. ### struct ###
  8.  
  9. #### Format String ####
  10.  
  11. ##### Optional 1st char #####
  12.  
  13. ```
  14. @ : native order, size & alignment (default)
  15. = : native order, standard size & alignment
  16. < : little-edian, standard size & alignment
  17. > : big-edian, standard size & alignment
  18. ! : same as >
  19. ```
  20.  
  21. ##### Remaining chars. #####
  22.  
  23. ```
  24. [optional preceding decimal indicates repetition]
  25.  
  26. x : pad byte -> no value
  27. c : char -> string (len == 1)
  28. b : signed char -> integer
  29. B : unsigned char -> integer
  30. ? : _Bool -> bool (if C99 available, otherwise char)
  31. h : short -> integer
  32. H : unsigned short -> integer
  33. i : int -> integer
  34. I : unsigned int -> integer or long
  35. l : long -> integer
  36. L : unsigned long -> long
  37. f : float -> float
  38. d : double -> float
  39.  
  40. [preceding decimal indicates lenght]
  41.  
  42. s : char[] (C string) -> string
  43. p : pascal array -> string (short variable-length string stored in a fixed number of bytes, first byte is the lenght of the string)
  44.  
  45. [Only available in native format.]
  46.  
  47. P : int/long type that holds a pointer (void *) -> long
  48.  
  49.  
  50. [Not in native mode unless 'long long' in platform C.]
  51.  
  52. g : long long -> long
  53. Q : unsigned long long -> long
  54.  
  55. ```
  56.  
  57. #### Exceptions ####
  58.  
  59. ```
  60. struct.error
  61. ```
  62.  
  63. #### Functions ####
  64.  
  65. ```
  66. calcsize(format_string) - returns size of C struct
  67.  
  68. pack(format_string, v1, v2, ...) - returns string represented struct
  69.  
  70. pack_into(format_string, buffer, offset, v1, v2, ...) - same as pack but writes to buffer and accepts an offset
  71.  
  72. unpack(format_string, struct_string) - returns tuple representation of the struct, len(struct_string) == calcsize(format_string)
  73.  
  74. unpack_from(format_string, buffer[, offset=0]) - unpack buffer from offset
  75. ```
  76.  
  77. #### Examples ####
  78.  
  79. ```
  80. import struct
  81.  
  82. format_string = '2hl?Q10s'
  83.  
  84. raw_data = [1, 2, 3, True, 1234567890, "abcdefghi"]
  85.  
  86. packed_data = struct.pack(format_string, *raw_data)
  87. # Out[163]: '\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xd2\x02\x96I\x00\x00\x00\x00abcdefghi\x00'
  88.  
  89. unpacked_data = struct.unpack(format_string, packed_data)
  90.  
  91. print "Raw Data:", raw_data
  92. # Raw Data: [1, 2, 3, True, 1234567890, 'abcdefghi']
  93.  
  94. print "Packed Data:", packed_data
  95. # Packed Data: ☺ ☻ ♥ ☺ ╥☻ûI abcdefghi
  96.  
  97. print "Unpacked Data (tuple):", unpacked_data
  98. # Unpacked Data: (1, 2, 3, True, 1234567890, 'abcdefghi\x00')
  99.  
  100. print "Unpacked Data (list):", list(unpacked_data)
  101. # Unpacked Data: [1, 2, 3, True, 1234567890, 'abcdefghi\x00']
  102.  
  103. format_string = '>' + format_string
  104. packed_data = struct.pack(format_string, *raw_data)
  105. # Out[167]: '\x00\x01\x00\x02\x00\x00\x00\x03\x01\x00\x00\x00\x00I\x96\x02\xd2abcd
  106. efghi\x00'
  107.  
  108. print "Packed Data:", packed_data
  109. # Packed Data: ☺ ☻ ♥☺ Iû☻╥abcdefghi
  110. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement