unpack函数
eg1.
"ABC".unpack('CCC') #[65, 66, 67]
#参数'C'代表“取出一个字元,并视为unsigned integer”
eg2.
bitmap_header.unpack("a2LSSL")
# ['BM', 61254, 0, 0, 54]
# a代表一个character,2代表出现两次
# L代表连续四个character做为unsigned long integer
# S代表连续两个character做为unsigned short integer
pack函数
eg1.
[65, 66, 67].pack('CCC') #'ABC'
["abc", "def"].pack("a*") # "abc"
["abc", "def"].pack("a*a*") #"abcdef"
详解
- a Ascii字符(塞入null字符/保留后续的null字符或空格)
- A Ascii字符(塞入空格/删除后续的null字符和空格)
["abc"].pack("A4") #"abc "
“ abc ”.unpack(A4) #["abc "]
- Z Ascii字符 (塞入null字符/删除后续的null字符)
- b 位串(从下级位到上级位)
- B 未串(从上级位到下级位)
"\001\002".unpack("b*") # ["1000000001000000"]
"\001\002".unpack("b3") => ["100"]
- h 16进制字符串(下级半字节在先)
"\x01\xfe".unpack("h*") => ["10ef"]
"\x01\xfe".unpack("h3") => ["10e"]
["10ef"].pack("h*") => "\001\376"
- H 16进制字符串(上级半字节在先)