首页 > 数据库技术 > 详细

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

时间:2016-06-02 12:58:25      阅读:176      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!