반응형
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)
(97, 98, 99)
>>> unpack('%sB'%3, 'abc')
(97, 98, 99)
>>> unpack('ssB', 'abc')
('a', 'b', 99)
>>> unpack('2sB', 'abc')
('ab', 99)
('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 |
,