mysql-protocol中对编码长度整数型的规则
时间:2021-07-01 10:21:17
帮助过:3人阅读
read_lc_int(buf):
"""
Takes a buffer and reads an length code string from the start.
Returns a tuple with buffer less the integer and the integer read.
"""
if not buf:
raise ValueError(
"Empty buffer.")
lcbyte =
buf[0]
if lcbyte == 251
:
return (buf[1
:], None)
elif lcbyte < 251
:
return (buf[1
:], int(lcbyte))
elif lcbyte == 252
:
return (buf[3:], struct_unpack(
‘<xH‘, buf[0:3
])[0])
elif lcbyte == 253
:
return (buf[4:], struct_unpack(
‘<I‘, buf[1:4] + b
‘\x00‘)[0])
elif lcbyte == 254
:
return (buf[9:], struct_unpack(
‘<xQ‘, buf[0:9
])[0])
else:
raise ValueError(
"Failed reading length encoded integer")
mysql官方文档
http://dev.mysql.com/doc/internals/en/integer.html
mysql-protocol中对编码长度整数型的规则
标签: