51Testing软件测试论坛

标题: loadrunner 中,将参数为“123,400,400”转换成int型,转换后为:123400400,怎么办呢 [打印本页]

作者: 紫罗兰1225516    时间: 2015-8-28 09:01
标题: loadrunner 中,将参数为“123,400,400”转换成int型,转换后为:123400400,怎么办呢
       loadrunner中,抓取的参数是“123,400,400”,想要将参数转换成int型的,使得转换后的结果为 :123400400;该怎么做呢?
                                     小女子初学,哪位大神可以指点一二呀?

作者: 清凉晨    时间: 2015-8-28 09:32
如果参数是3个数的话还是分开用int吧,别一个int后跟那么多数
作者: virgolong    时间: 2015-8-28 10:00
char rec_tmp[20];   //定义一个变量,用于存三个参数
sprintf(rec_tmp,"%s%s%s",lr_eval_string("{str1}"),lr_eval_string("{str2}"),lr_eval_string("{str3}"));   //把三个参数放到变量rec_tem中
lr_save_int(atoi(rec_tmp),"my_num");        //把变量的值转换int型放到变量my_num中
作者: virgolong    时间: 2015-8-28 10:03
呃,我错了,你抓出来直接是“123,400,400”,还以为是三个参数
作者: 紫罗兰1225516    时间: 2015-8-28 10:10
清凉晨 发表于 2015-8-28 09:32
如果参数是3个数的话还是分开用int吧,别一个int后跟那么多数

取出来的参数是一个数的,只不过这个数每三位之间用“,”隔开,所以如果直接使用atoi()函数转型的话,最终转换后的数是“,”隔开的第一段,即:123;现在想要的是,将这个数“123,400,400”转换后的最终结果是:123400400
作者: virgolong    时间: 2015-8-28 10:43
网上搜了下这个函数可以直接用,放到globals.h中:
int StrToNum(const char * pstr)
{
    int iresult = 0;
    const char * pstrRun = pstr;
    while (pstrRun[0] != '\0')
    {
        if (pstrRun[0] > 1 && pstrRun[0] <255 && isdigit(pstrRun[0]))
        {
            iresult *= 10;
            iresult += (pstrRun[0] - '0');

        }
        ++pstrRun;
    }

    return iresult;
}


然后在action中直接调用;
lr_save_int(StrToNum(lr_eval_string("{aa}")),"my_num");       


测试通过,打印出来的日志:
Action.c(5): Notify: Parameter Substitution: parameter "aa" =  "123,400,400"
Action.c(5): Notify: Saving Parameter "my_num = 123400400".
作者: 紫罗兰1225516    时间: 2015-8-28 15:34
virgolong 发表于 2015-8-28 10:43
网上搜了下这个函数可以直接用,放到globals.h中:
int StrToNum(const char * pstr)
{

谢谢哈,我试过这个这个方法,的确可用(虽然我不懂这里面的代码是什么意思
作者: virgolong    时间: 2015-8-28 15:46
紫罗兰1225516 发表于 2015-8-28 15:34
谢谢哈,我试过这个这个方法,的确可用(虽然我不懂这里面的代码是什么意思)

原理就是,把参数中从左到右每一位取出来,如果是数字,则每次×10后和下一次取的值相加
例如123,0=((1*10+2)*10+3)*10+0=1230




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2