반응형

import struct

data를 binary string으로 표현할 때 struct module을 사용한다


[proto type]

lambda 인자 : 표현식


라이트업을 쓰는 사람들도 그렇고 파이썬으로 소켓프로그래밍 하는사람들은 

대부분 이 함수를 애용하는 것 같다.

프로토 타입은 위에 적어논거 처럼 굉장히 간단하다. (+함수를 한줄만으로 만들게 해준다)

[ex1]

>>> def  hap(x,y):

return x + y


>>> hap(10,20)

30

>>> (lambda x,y: x+y) (10,20)

30

>>> 

인터넷에서 찾아본예제고 실제로 써봣는데 컬쳐 쇼크엿다 ㄷㄷ ; 함수의 이름 조차 선언해주지 않고도 

함수처럼 사용할 수 있다 


 [ex2] 

import struct

p=lambda x: struct.pack("<Q",x)  #Q   unsigned long long   integer   8   (2), (3)
# > : Big endian  <: Little endian 
#리틀엔디언 형식으로 unsigned long long 타입 파이썬데이터를  binary로 뽑아온다 

up= lambda x:struct.unpack("<L",x) # L  unsigned long   integer   4   (3)
#리틀엔디언 형식으로 unsgined long 타입 binary string을 파이썬 데이터로 뽑아온다 

참조 : https://docs.python.org/2/library/struct.html


위의 예제는 내가 실제로 많이 봐왓던 선언 부분이다 .. p,up 부분은 변수의 이름이 될테고

pack 과 unpack은 string을 c/c++처럼 각 character를 binary value로 다루게 해준다(+파이썬에서 아스키값을 바로 처리하기 위해 c의 struct 기능을 제공해 준다)
pack 은 파이썬 data를 binary로 변경할때 쓰고
unpack은 binary string을 python로 변경할때 사용한다 

[pack]
>>> import struct
>>> buffer=struct.pack("ibh",1,2,3)
>>> print repr(buffer)
'\x01\x00\x00\x00\x02\x00\x03\x00'

+) i: type을 int로 b: (signed char) h: short. 즉 1,2,3 번째 받는 인자들의 타입들을 선언해주는것 


[unpack]

>>> unpack('%sB'%len('abc'), 'abc')
(97, 98, 99)
>>> unpack('%sB'%3, 'abc')
(97, 98, 99)
>>> unpack('ssB', 'abc')
('a', 'b', 99)
>>> unpack('2sB', 'abc')
('ab', 99)

pack& unpack 참조  :

 http://coreapython.hosting.paran.com/grimoire/Python%20Grimoire.htm


`



반응형

'과거의 컴퓨터 공부 > Python' 카테고리의 다른 글

sys모듈 사용  (0) 2014.08.29
자판기.py  (0) 2014.08.28
자료형  (0) 2014.08.28
기본적인 연산, for 문, if 문  (0) 2014.08.25
,