рдЙрдиреНрдирдд рдкрд╛рдпрдерди рд╡рд┐рдХрд╛рд╕ рдкрд╛рдареНрдпрдХреНрд░рдо
рдЕрдзреНрдпрд╛рдп 10
>
рд╕реНрддрд░ 4
рдЙрджреНрджреЗрд╢реНрдп
struct рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдП рдЦреЗрдд рдХрд╛ рдЕрдВрддрд┐рдо рдбреЗрдЯрд╛ рдмреНрд░реЗрдХрдбрд╛рдЙрди рд╕реЗрдЯ рдХрд░реЗрдВред
рд╕рдбрд╝рдХ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рд╕реНрдЯреЗрд╢рди рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдирдП рдЦреЗрдд рдФрд░ рд╡рд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЛрдИ рдЧрдИ рдлрд╕рд▓реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдмреЛрдИ рдЧрдИ рдлрд╕рд▓реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдФрд░ рдЦреЗрдд рдХреА рдЕрдиреБрдорд╛рдирд┐рдд рдЙрдкрдЬ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдХреЗ рдЕрдиреНрдп рд╕реНрддрд░реЛрдВ рдХреА рддрд░рд╣, рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ (serializing) рдФрд░ рдбрд┐рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ (deserializing) рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рдЕрдВрддрд┐рдо рдореЙрдбреНрдпреВрд▓ struct рдореЙрдбреНрдпреВрд▓ рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред
struct рдореЙрдбреНрдпреВрд▓ рдмрд╛рдЗрдирд░реА рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдкреИрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдлрдВрдХреНрд╢рдиреНрд╕ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕рдореЗрдВ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдФрд░ рдбрд┐рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рддреЗ рд╕рдордп рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдмрд╣реБрдореБрдЦреА рдмрдирд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЬрд┐рди рдлрдВрдХреНрд╢рдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП import struct рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
struct.calcsize(): рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдлреЙрд░реНрдореЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреИрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдиреЗ рдмрд╛рдЗрдЯреНрд╕ рд▓рдЧреЗрдВрдЧреЗ; рдпрд╣ рдПрдХ (1) рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рд▓реЗрддрд╛ рд╣реИ, рдЬреЛ рдЙрд╕ рдлреЙрд░реНрдореЗрдЯ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдмрд╛рдЗрдЯ рд╕рд╛рдЗрдЬ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдЬреЛ рдлреЙрд░реНрдореЗрдЯ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗ, рд╡реЗ рд╣реИрдВ:- integer:
'i'рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реВрдкрд┐рдд, рдпрд╣ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ (whole numbers) рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдореЗрдЯ рд╣реИ - float:
'f'рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реВрдкрд┐рдд, рдпрд╣ рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛рдУрдВ (decimal numbers) рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдореЗрдЯ рд╣реИ - double:
'd'рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реВрдкрд┐рдд, рдпрд╣ рдЙрди рдЬрдЯрд┐рд▓ рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛рдУрдВ (complex decimal numbers) рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдореЗрдЯ рд╣реИ рдЬрд╣рд╛рдВ float рдлреЙрд░реНрдореЗрдЯ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛
- integer:
struct.pack(): рдмрд╛рдЗрдирд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЗ рдЪреБрдиреЗ рд╣реБрдП рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдкреИрдХ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреЛ (2) рдпрд╛ рдЕрдзрд┐рдХ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рд╡рд╣ рдлреЙрд░реНрдореЗрдЯ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╢реЗрд╖ рд╡реЗ рдорд╛рди рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдлреЙрд░реНрдореЗрдЯреНрд╕ рд╡рд╣реА рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рдмрддрд╛рдП рдЧрдП рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛редstruct.unpack(): рдкреИрдХреНрдб рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рддрд╛ рд╣реИ; рдпрд╣ рджреЛ (2) рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рд╡рд╣ рдлреЙрд░реНрдореЗрдЯ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╣ рдЙрд╕ рдлреЙрд░реНрдореЗрдЯ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рджреВрд╕рд░рд╛ рд╡рд╣ рдбреЗрдЯрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛редstruct.iter_unpack(): рдкреИрдХреНрдб рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рддрд╛ рд╣реИ; рдпрд╣struct.unpack()рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдЯреЗрд░реЗрдЯ рдХрд░рддрд╛ рд╣реИредstruct.pack_into():struct.pack()рдХрд╛ рдЙрдиреНрдирдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ; рдпрд╣ рдЪрд╛рд░ (4) рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рдлреЙрд░реНрдореЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рджреВрд╕рд░рд╛ рдбреЗрдЯрд╛ рдмрдлрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдбреЗрдЯрд╛ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреАрд╕рд░рд╛ рдмрдлрд░ рдореЗрдВ рд╡рд╣ рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдбреЗрдЯрд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЪреМрдерд╛ рд╡рд╣ рдбреЗрдЯрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдкреИрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВредstruct.unpack_from():struct.unpack()рдХрд╛ рдЙрдиреНрдирдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ; рдпрд╣ рддреАрди (3) рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рд╡рд╣ рдлреЙрд░реНрдореЗрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рджреВрд╕рд░рд╛ рдбреЗрдЯрд╛ рдмрдлрд░ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдирдкреИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рддреАрд╕рд░рд╛ рдмрдлрд░ рдореЗрдВ рд╡рд╣ рд╕реНрдерд╛рди рд╣реИ рдЬрд╣рд╛рдВ рд╕реЗ рдЖрдк рдЕрдирдкреИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕реЗрд╡рд╛ рд╕реНрдЯреЗрд╢рди рдореЗрдВ рд▓рд╛рдЗрдЯ X рдорд╛рд░реНрдХ рддрдХ рдЬрд╛рдПрдБ рдФрд░ рдореЗрдЬ рдХреА рдУрд░ рдореБрдбрд╝реЗрдВ, рддреАрди (3) рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдмрдирд╛рдПрдБ рдЬрд┐рдирдХреЗ рдирд╛рдо рд╣реЛрдВ: integer, float рдФрд░ doubleред рд╣рдо рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддреНрдпреЗрдХ рдлреЙрд░реНрдореЗрдЯ рдХреЗ рдмрд╛рдЗрдЯ рд╕рд╛рдЗрдЬ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП struct.calcsize() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд░реЗрдВрдЧреЗред integer рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ 'i' рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, float рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рд▓рд┐рдП 'f' рдФрд░ рдЕрдВрдд рдореЗрдВ double рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рд▓рд┐рдП 'd' рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдХреЗ рд╕рд╛рдеред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: integer = struct.calcsize('i')ред рдЗрди рддреАрдиреЛрдВ (3) рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ write() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдЧреЛрд▓реНрдб X рдорд╛рд░реНрдХ рддрдХ рдЬрд╛рдПрдБ рдФрд░ рдирдП рдЦреЗрдд рдкрд░ рдбреЗрдЯрд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП read() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ; рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯреНрд╕ рдФрд░ рдлреЙрд░реНрдореЗрдЯ рдиреЛрдЯ рдХрд░реЗрдВ, рдЕрд░реНрдерд╛рддреН: Resources, Size рдФрд░ Estimateред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдкрдиреЗ рдЗрд╕реЗ рдиреЛрдЯ рдХрд░ рд▓рд┐рдпрд╛, рддреЛ рдиреАрд▓реЗ рдХрд╛рд░реНрдкреЗрдЯ рдкрд░ рд▓рд╛рдЗрдЯ X рдорд╛рд░реНрдХ рддрдХ рдЬрд╛рдПрдБ рдФрд░ blue_data рдирд╛рдордХ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдмрдирд╛рдПрдБред
blue_data рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ struct.pack() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ; рдЗрд╕рдореЗрдВ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╣ рдлреЙрд░реНрдореЗрдЯ рдФрд░ рд╡реЛ рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдерд╛ред рдлреЙрд░реНрдореЗрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдлреЙрд░реНрдореЗрдЯ рдЯрд╛рдЗрдкреНрд╕ рдХреЛ рдПрдХр╣Ар╕Фр╕╡р╕вр╕з рдпреВрдирд┐рдЯ рдореЗрдВ 'pack' рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, integer рдлреЙрд░реНрдореЗрдЯ рдХреЛ 'i' рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрджрд┐ рдЖрдк рддреАрди integer рдбреЗрдЯрд╛ рдЯрд╛рдЗрдкреНрд╕ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ 'iii' рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣, рдпрджрд┐ рдЖрдк рдПрдХ integer, рдПрдХ float рдФрд░ рдПрдХ double рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ 'ifd' рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рд╣реИ:
data_1 = 8 # is an integer data_2 = 2.25 # is a float data_3 = 900.702938103 # is a double blue_data = struct.pack('ifd', data_1, data_2, data_3)
struct.pack() рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдлреА рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдлреЙрд░реНрдореЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рд╛рде рдХрдИ рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯреНрд╕ рдХреЛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рдирд╛ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмреЗрд╕ рдорд╛рдирддреЗ рд╣реБрдП рдкрд╣рд▓реЗ рдкрдврд╝реЗ рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдЬреЛрдбрд╝реЗрдВред рдкреИрдХреНрдб рдбреЗрдЯрд╛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП display() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ blue_data рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред
рдиреАрд▓реЗ рдХрд╛рд░реНрдкреЗрдЯ рдкрд░ рдбрд╛рд░реНрдХ X рдорд╛рд░реНрдХ рддрдХ рдЬрд╛рдПрдБ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдХреА рдУрд░ рдореБрдбрд╝реЗрдВ, blue_unpack рдирд╛рдордХ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдмрдирд╛рдПрдБ рдФрд░ рдЙрд╕рдореЗрдВ struct.unpack() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╣реА рдлреЙрд░реНрдореЗрдЯ рдФрд░ blue_data рд╡реЗрд░рд┐рдПрдмрд▓ рдкрд╛рд╕ рдХрд░реЗрдВред рдлреЙрд░реНрдореЗрдЯ рдЙрд╕реА рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ struct.pack() рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рддрд╛рдХрд┐ рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рдЙрд╕реА рддрд░рд╣ рдбрд┐рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░ рд╕рдХреЗрдВ рдЬреИрд╕реЗ рдЖрдкрдиреЗ рдЙрд╕реЗ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд┐рдпрд╛ рдерд╛ред рдкрд╣рд▓реЗ рдкреИрдХ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП write() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ blue_unpack рдкрд╛рд╕ рдХрд░реЗрдВред
рд╡рд╣реАрдБ рд╣рдо struct.iter_unpack() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ; рдпрд╣ struct.unpack() рдХреА рддрд░рд╣ рд╣реА рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдЗрд╕реЗ for рд▓реВрдк рдореЗрдВ рдлреЙрд░реНрдореЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдПрдХ-рдПрдХ рдмреНрд▓реЙрдХ рдХрд░рдХреЗ рдЗрдЯрд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рд▓рд┐рдЦ рджреЗрдВред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
for values in struct.iter_unpack(-insert value-, -insert value-): player.speak(values)
рд╣рдо рдорд╛рдиреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП speak() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ; struct.iter_unpack() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдЫреВрдЯреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╡рд╣реА рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЖрдкрдиреЗ struct.unpack() рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реЗрд░рд┐рдПрд╢рдиреНрд╕ рд╣реИрдВред
рд▓рд╛рд▓ рдХрд╛рд░реНрдкреЗрдЯ рдкрд░ рдЧреЛрд▓реНрдб X рдорд╛рд░реНрдХ рддрдХ рдЬрд╛рдПрдБ рдФрд░ рдореЗрдЬ рдХреА рддрд░рдл рдореБрдбрд╝реЗрдВ, read() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╕рд▓реЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВред рд╕рднреА рдорд╛рддреНрд░рд╛рдУрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╕рд▓ рдХреЗ рдлреЙрд░реНрдореЗрдЯ рдХреЛ рдиреЛрдЯ рдХрд░реЗрдВред рд▓рд╛рд▓ рдХрд╛рд░реНрдкреЗрдЯ рдкрд░ рд▓рд╛рдЗрдЯ X рдорд╛рд░реНрдХ рддрдХ рдЬрд╛рдПрдБ рдФрд░ buffer рдирд╛рдордХ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдФрд░ рдЙрд╕рдореЗрдВ bytearray(16) рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВред рдпрд╣ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдХрд▓реЗрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рднрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдбреНрд░реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдбреЗрдЯрд╛ рдмреИрдВрдХ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓реА рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрдЦреНрдпрд╛ 16 рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк buffer рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд┐рддрдиреЗ рдмрд╛рдЗрдЯреНрд╕ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
struct.pack_into() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдиреЗ рдЬреЛ buffer рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рд╣реИ, рдЙрд╕реЗ рднрд░реЗрдВред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡реЗрд░рд┐рдПрдмрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдпрдВ рдорд╛рдиреЛрдВ рдХреЛ рд╕реАрдзреЗ buffer рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдбрд╛рд▓ рджреЗрдЧрд╛ред рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рд╕рднреА рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЙрдирдХреЗ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдХреЛ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднрд░реЗрдВрдЧреЗред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдлрд╕рд▓ рдХреЗ рдорд╛рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрд╕рдХрд╛ рдлреЙрд░реНрдореЗрдЯ, рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдФрд░ рдорд╛рддреНрд░рд╛ рджреА рдЬрд╛рдПрдЧреАред рдкрд╣рд▓реЗ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдореЗрдВ рдлреЙрд░реНрдореЗрдЯ рдЬреЛрдбрд╝реЗрдВ, рджреВрд╕рд░рд╛ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рд╡рд╣ рд▓реЛрдХреЗрд╢рди рд╣реЛрдЧреА рдЬрд╣рд╛рдБ рдЖрдк рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ bufferред рддреАрд╕рд░реЗ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдореЗрдВ buffer рдХреЗ рднреАрддрд░ рд╡рд╣ рдкреЛрдЬреАрд╢рди рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд╣рд╛рдБ рдЖрдк рдорд╛рди рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ; рдлреЙрд░реНрдореЗрдЯ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐рддрдиреЗ рдмрд╛рдЗрдЯреНрд╕ рдЙрдкрдпреЛрдЧ рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рднрд░реЗ рд╣реБрдП рд╣рд┐рд╕реНрд╕реЛрдВ рдкрд░ рдУрд╡рд░рд▓реИрдк рди рдХрд░реЗрдВред рдЕрдВрдд рдореЗрдВ рд╡рд╣ рдорд╛рди рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕реЗ рдЖрдк buffer рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдФрд░ рдкреИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
struct.pack_into('i', buffer, 0, 82)
buffer рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ 16 рдмрд╛рдЗрдЯреНрд╕ рд╣реИрдВ; рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, integer рдлреЙрд░реНрдореЗрдЯ рдХреЗ рд▓рд┐рдП 4 рдмрд╛рдЗрдЯреНрд╕ рдЙрдкрдпреЛрдЧ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреЛрдЬреАрд╢рди 0 рдкрд░ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдбрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж buffer рдореЗрдВ рдХреЗрд╡рд▓ 12 рдмрд╛рдЗрдЯреНрд╕ рдЦрд╛рд▓реА рд░рд╣реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдкреЛрдЬреАрд╢рди 0-3 рдЙрд╕ рдорд╛рди (рдЗрд╕ рдХреЗрд╕ рдореЗрдВ 82) рд╕реЗ рднрд░ рдЪреБрдХреЗ рд╣реИрдВред рдЗрд╕реЗ рдЙрди рд╕рднреА рдлрд╕рд▓ рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдкрдврд╝рд╛ рдФрд░ рдиреЛрдЯ рдХрд┐рдпрд╛ рдерд╛; рдХреБрд▓ рддреАрди (3) рд╣реИрдВред рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреНрдб рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП display() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ buffer рдкрд╛рд╕ рдХрд░реЗрдВред
рд▓рд╛рд▓ рдХрд╛рд░реНрдкреЗрдЯ рдкрд░ рдбрд╛рд░реНрдХ X рдорд╛рд░реНрдХ рддрдХ рдЬрд╛рдПрдБ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдХреА рдУрд░ рдореБрдбрд╝реЗрдВ; рдпрд╣рд╛рдБ рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬ рдХрд░рдХреЗ рдЙрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рд╕рд╣реА рд╕реНрдЯреЛрд░реЗрдЬ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗред рддреАрди рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдмрдирд╛рдПрдБ: lettuce, carrots рдФрд░ melons; рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдирдкреИрдХ рдХрд░реЗрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рд▓рд┐рдП struct.unpack_from() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ рдФрд░ рдкрд╣рд▓реЗ рдпреВрдЬрд╝ рдХрд┐рдП рдЧрдП рдЙрди рд╣реА рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдкреИрдХ рдХрд┐рдпрд╛ рдерд╛ред рдкрд╣рд▓реЗ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдореЗрдВ рдлреЙрд░реНрдореЗрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ, рджреВрд╕рд░реЗ рдореЗрдВ buffer рдСрдмреНрдЬреЗрдХреНрдЯ (рдЬрд╣рд╛рдБ рд╕реЗ рдЕрдирдкреИрдХ рдХрд░рдирд╛ рд╣реИ) рдФрд░ рдЕрдВрдд рдореЗрдВ buffer рдореЗрдВ рд╡рд╣ рдкреЛрдЬреАрд╢рди рдЬрд╣рд╛рдБ рд╕реЗ рдЕрдирдкреИрдХ рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
lettuce = struct.unpack_from('i', buffer, 0)
рдпрд╣ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рджрд┐рдП рдЧрдП рдкреИрдХрд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ; рджреЛ рдЕрдиреНрдп рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛрд╣рд░рд╛рдПрдБ рдФрд░ рд╕реНрддрд░ (level) рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lettuce, carrots рдФрд░ melons рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ write() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред