mysql length encoded integer的编码与解码-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 99970
  • 博文数量: 18
  • 博客积分: 681
  • 博客等级: 中士
  • 技术积分: 295
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-17 13:33
文章分类
文章存档

2012年(8)

2011年(10)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: python/ruby

2012-09-02 15:02:20

mysql客户服务端通信协议中的一个基本类型是长度编码的整型,即在位串中加入长度信息,在解码的时候必须根据这来进行解码。

当整数小于251(0xfb)时,使用一个字节来对整数进行编码;当整数大于251时,使用多个字节对整数进行编码,第一个字节为0xfc,0xfd,0xfe之一,0xfc表示该整数使用2个字节编码,后面2个字节未该整数的值;0xfd表示该整数使用3个字节编码,后面3个字节为该整数的值;0xfe表示该整数有8个字节,后面8个字节未该整数的值。
协议详细可以参考:

解码和编码的erlang实现如下:
lenenc_int_encode(int) when int>=0, int<16#fb ->
    <>;                
lenenc_int_encode(int) when int>=16#fb, int<16#ffff ->
    <<16#fc:8, int:16>>;      
lenenc_int_encode(int) when int>=16#ffff, int<16#ffffff -> 
    <<16#fd:8, int:24>>;
lenenc_int_encode(int) when int>=16#ffffff, int<16#ffffffffffffffff ->
    <<16#fe:8, int:64>>.

lenenc_int_decode(<>) ->
    int;
lenenc_int_decode(<<16#fc:8, int:16>>) ->
    int;
lenenc_int_decode(<<16#fd:8, int:24>>) ->
    int;
lenenc_int_decode(<<16#fe:8, int:64>>) ->
    int.

阅读(3373) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图