搜索
查看: 4435|回复: 5

字符串处理函数,我这么写怎么报错,希望哪位指点一下,谢谢(已解决)

[复制链接]

8

主题

124

帖子

905

积分

三级会员

Rank: 4

积分
905
发表于 2013-1-12 15:08:05 | 显示全部楼层 |阅读模式
本帖最后由 renmin 于 2013-1-12 23:03 编辑

字符串处理函数,我这么写怎么报错,希望哪位指点一下,谢谢
我需要实现的功能
有一个编辑框,在编辑框中输入0-9A-F,输入的长度不定,如果的个数是单数比如123,那么需要将123转换为\x12\x03,单数使用0填补高位。
但是我在处理数据的时候就遇到了麻烦,具体的函数代码是这样写的:
  1. //字符串转换为16进制字符串处理函数
  2. Str_hex = function(char){
  3.   str = string.replace(char,"\s","");//去掉空格
  4.     return (for(i=1;#str;1){
  5.      return '\x'+string.left(str,i*2);         
  6.      }
  7.     );
  8.     )
  9. }
复制代码
下面是错误提示
---------------------------
aardio:语法错误
---------------------------

错误行号:#24
文件:[string "import win.ui;..."]
错误:<未知符号>
靠近:...'for'
字节码:0x66
---------------------------
确定   
---------------------------
错误主要指向 return (for(i=1;#char;1){  这个行代码
希望哪位高手指点一下这个错误,谢谢。
回复

使用道具 举报

20

主题

325

帖子

1945

积分

新手入门

积分
1945
发表于 2013-1-12 15:19:27 | 显示全部楼层

[code]str = "FE030401F" io.open() re = string.replace( str,".{1,2}",function(a

  1. str = "FE030401F"
  2. io.open()
  3. re = string.replace( str,".{1,2}",function(a){
  4.         return "\x"++a;
  5. })

  6. io.print( re )
复制代码
回复

使用道具 举报

33

主题

543

帖子

3304

积分

荣誉会员

Rank: 8Rank: 8

积分
3304
发表于 2013-1-12 15:19:51 | 显示全部楼层

[code]import console; console.log( (string.replace("FE030401FC", "\x{1,2}", "\\

  1. import console;
  2. console.log( (string.replace("FE030401FC", "\x{1,2}", "\\x\1")) );
复制代码
回复

使用道具 举报

8

主题

124

帖子

905

积分

三级会员

Rank: 4

积分
905
 楼主| 发表于 2013-1-12 15:48:00 | 显示全部楼层

[quote][size=2][color=#999999]lujjjh 发表于 2013-1-12 15:19[/color] [url=forum.php?

lujjjh 发表于 2013-1-12 15:19

非常感谢“lujjjh”的指点,aardio总是给我一种似懂非懂的感觉,我现在最需要补充的就是多写代码。
上面的问题解决了,我只要是用aardio来编写网络通信,经常需要使用到16进制数据,有的是转换有的是字符串处理。
上面的问题,我按照“lujjjh”的写法,可以使用了
非常感谢
下面是OK的具体代码
  1. //字符串转换为16进制字符串处理函数
  2. Str_hex = function(char){
  3.   str = string.replace(char,"\s","");//去掉空格
  4.    return ( string.replace(str, "\x{1,2}", "\\x\1"))
  5. }
复制代码
我之前没有主机for语句不能做返回,谢谢群友提醒。
我之前也有一个差不多的数据处理,那个是接收数据,上面这个主要是用于发送数据,
接收处理的帖子:
http://bbs.aardio.com/thread-9141-1-1.html
本问题已经解决,问题到此结束。
回复

使用道具 举报

8

主题

124

帖子

905

积分

三级会员

Rank: 4

积分
905
 楼主| 发表于 2013-1-12 16:11:45 | 显示全部楼层

[quote][size=2][color=#999999]ljtnine 发表于 2013-1-12 15:19[/color] [url=forum.php

ljtnine 发表于 2013-1-12 15:19

非常感谢你的帮助
谢谢
问题解决了
你的这个办法很不错
回复

使用道具 举报

8

主题

124

帖子

905

积分

三级会员

Rank: 4

积分
905
 楼主| 发表于 2013-1-12 16:45:42 | 显示全部楼层

补充一点: 问题:上面的两个函数都是可以处理出来的,数据也是对的,就是有一点需要注意,这样如果通过TCP发送出去,接收到的数据并不是发送的数据,这个是因为上面

补充一点:
问题:上面的两个函数都是可以处理出来的,数据也是对的,就是有一点需要注意,这样如果通过TCP发送出去,接收到的数据并不是发送的数据,这个是因为上面的函数只是转换出了字符串缺少进制转义,可以使用下面的办法进行转义即可,
  1. str = Str_hex(mainForm.edit.text);
  2. sendstring = eval("'"++str++"'");
复制代码
这样发送以16进制发出数据,接收端使用16进制模式接收数据,就可以接收到发送端的一样的数据了。
转义参考论坛地址:http://bbs.aardio.com/thread-7524-1-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2020-8-15 12:12 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表