开发socket测试脚本过程,data.ws中,LR都是采用16进制进行编码的,而我们输入的却是10进制,无法使用,于是度娘,通过多个网站,寻找并汇总到以下方法,经实践均可使用,但温馨提示各位,在使用以上方法时,请看清楚和查清楚各个函数的意义,否则后果自负,在此同时也感谢云层的提供方法。
方法1:
char *change(int val,int base,char *retbuf)
{
static char *str = "0123456789ABCDEF";
char *p;
char buf[15];
p = buf+14;
*p = 0;
do{
*--p = str[val % base];
}
while(val /= base);
strcpy(retbuf,p);
return retbuf;
}
Action()
{
char buff[20];
change(100,2,buff); //将值转换2进制
lr_output_message("%s\n",buff);
change(100,8,buff); //将值转换8进制
lr_output_message("%s\n",buff);
change(100,10,buff); //将值转换10进制
lr_output_message("%s\n",buff);
change(atoi(lr_eval_string("{num}")),16,buff); //将参数化值转换16进制
lr_output_message("%s\n",buff);
return 0;
}
方法2:
Action()
{
int num=10;
char cnum[32];
itoa(num,cnum,16); //将值转换16进制,也可以转换为其他进制,比如,2、8、10
lr_output_message("the binary number is:%s",cnum);
return 0;
}
方法3:
long strtol( const char * s, char **end, int r); //声明函数
Action()
{
long l;
char *dnum="555test";
char *cnum;
l=strtol(dnum,&cnum,16); //将值转换16进制,也可以转换为其他进制,比如,2、8、10
lr_output_message("long=%ld,the binary number is:%s",l,cnum);
return 0;
}