关于一个字符转换函数的疑问
先看一段代码:char *tmp;
int i=0,rc,n;
while(1)
{
lrs_receive_ex("socket2", "buf1", "NumberOfBytesToRecv=2", LrsLastArg);
lrs_save_param("socket2", NULL,"p",0,-1);
tmp = lr_eval_string("<p>");
rc=lrs_hex_string_to_int(tmp,8,&i);
if(rc==0)n=0;
else n=1;
}
假设 p=\x01V (实际上p=\x01\x56, 56显示为v,是lr显示问题,也顺带求高手解决一下,如何正确的得到\x01\x56,然后转换为整型342).上面是循环接收数据,每次两个字节,假设每次都是p。那么rc的值肯定为9013,解释为:无法转换。
问题:无线循环大概10次左右,n的值会变成0.。。。。。也就是转换成功。。lrs_hex_string_to_int 是不是还有什么使用注意事项啊?还是我使用不对?跪求高手解决。 对了。。那个 p 的值 不止是显示问题,用lr_eval_string("<p>")得到的p的值也是\x01v,实际上p应该是\x01\x56 继续在线等。。。等到下班。。 关于那个显示问题,lr会主动将65~90和 97~122之间的ASCII码转换成字符A~Z和a~z。。。。。能不能让他不转换啊?有人知道怎么做么??继续等待,寻找。。。实验中。。 我发现没辙了。。。他自动转换的。。最后的办法就是一个字节一个字节的收,然后根据需要,自己转换成 ASCII码,使用sprintf函数。。这样就可以得到包头的大小了。。。。关于那个 转换函数lrs_hex_string_to_int 的问题。。。我只能说。。也许我用的lr 是盗版。。。请正版用户能试验下,给个结论。。呵呵。。。 此问题就这么结束吧。。。我是想不到更好的办法解决了。。如果高手有兴趣可以研究哈共享一下。 用C的库函数就是了,如果还不行的话只能说明lr的C解释器有些问题。
页:
[1]