码迷,mamicode.com
首页 > 数据库 > 详细

mysql-protocol中对编码长度整数型的规则

时间:2016-06-02 13:00:17      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

固定长度整型数值在mysql 协议中的应用之一就是affected row ;这个要根据首字节来判断

1、如果首字节小于251;那么首字节就是它要表示的数值。

2、如果首字节等于251;那么它表示的就是空值。

3、如果首字节等于252;那么首字节后的2个字节用来表示数值大小。

4、如果首字节等于253;那么首字节后的3个字节用来表示数值的大小。

5、如果首字节等于254;那么首字节后的8个字节用来表示数亿的大小。

 

python描述

def 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中对编码长度整数型的规则

标签:

原文地址:http://www.cnblogs.com/JiangLe/p/5552355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!