mysql-protocol中對編碼長度整數型的規則

來源:互聯網
上載者:User

標籤:

固定長度整型數值在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中對編碼長度整數型的規則

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.