@for ever 2012-06-25
在python32版本下面,下面的代碼:
msg = pack(">H%ds" % len(reason), code, reason)
執行後出現如下的錯誤:
struct.error: argument for 's' must be a bytes object
做如下修改,錯誤解決:
msg = pack(">H%ds" % len(reason), code, reason.encode('utf-8'))
關於struct.pack函數,參數個數是無限的。第一個參數定義打包格式,
剩餘的所有參數都是要打包的內容。
第一個格式參數具體寫法如下:
Format c Type
Python Note
x pad byte no value
c char string of length 1
b signedchar integer
B unsignedchar
integer
? _Bool bool
(1)
h short integer
H unsignedshort
integer
i int integer
I unsignedint
integer or long
l long integer
L unsignedlong
long
q longlong long
(2)
Q unsignedlonglong
long (2)
f float float
d double float
s char[] string
p char[] string
P void* long
此外,還包含相應的大/小端設置(如果忽略該設置,默認<):
@ native native
= native standard
< little-endian
standard
> big-endian standard
! network (= big-endian)
standard
@forandever 2012-6-25