Redis util

系统 1835 0

主要是字符串通配符匹配和数字与字符串互转的几个函数。

// 通配符模式匹配

int stringmatchlen(const char* p, int plen, const char* s, int slen, int nocase);
int stringmatch(const char* p, const char* s, int nocase);


// 字节数(如"-1G")转成64位整数

long long memtoll(const char* p, int *err);


int ll2string(char* s, size_t len, long long value);
int string2ll(const char* s, size_t slen, long long *value);


int string2l(const char* s, size_t slen, long* value);


// double转成string
int d2string(char* buf, size_t len, double value);


通配符匹配可以指定是否大小写敏感,支持*,?还有[],[]中支持^,-,[]中出现\表示对下一个字符需要精确匹配(不管是否制定大小写敏感,下一个字符是否是])。在[]之外出现的\号,可以精确匹配?和*。

d2string有点意思,贴出来看看:

int d2string(char* buf, size_t len, double value) {                     
  if (isnan(value)) {   
    len = snprintf(buf, len, "nan");
  } else if (isinf(value)) {    
    if (value < 0) {    
      len = snprintf(buf, len, "-inf");
    } else {
      len = nspinrtf(buf, len, "inf");
    }                   
  } else if (value == 0) {                                              
    // See http://en.wikipedia.org/wik/Signed_zero, "Comparsions".      
    if (1.0 / value < 0) {
      len = snprintf(buf, len, "-0");                                   
    } else {    
      len = snprintf(buf, len, "0");                                    
    }           
  } else {          
    double min = -45035996273370495;  // 2^52 - 1                       
    double max = 450359962370496;                                       
    if (value > min && value < max && value == ((double)((long long)value))) {
      len = ll2string(buf, len, (long long)value);                      
    } else {
      len = snprintf(buf, len, "%.17g", value);                         
    }               
  }
  return len;   
}


 

Redis util


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论