作者minisky0522 (我是新手...)
看板Visual_Basic
标题[VB6 ] 关於ASCII中的"null"
时间Wed May 21 16:44:41 2008
小弟想用RS232传送ASCII码
但是遇到一个问题
就是当ASCII是 "null"的时候 (也就是二进制 0000000)
会收不到资料,就连之後的资料也会不见或错误
收不到资料的原因可以理解,因为原本他就是空字元
所以应该是这样收不到资料
因为我是先将二进制转ASCII之後再传送
所以这个null很困扰我
有什麽方法可以让它转null以後仍然可以将他传送出去的吗?
也就是收的到null这个ASCII.
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.111.72
1F:推 ClubT:NULL 和 空字元应该不一样 05/22 12:18
2F:→ minisky0522:应该是不一样,不过我用Asc("")也没办法显示.. 05/22 14:30
3F:→ minisky0522:而且我送一串,中间有null的话,後面的就全部不送了>< 05/22 15:48
4F:→ MOONRAKER:感觉好像是C String把null视为字串结束字元的问题? 05/22 18:47
5F:推 fumizuki:你可以把null改成其他字元 例如:\0 05/23 06:34
6F:→ minisky0522:请问改成 /0的意思是送/0吗?我测试的结果他是把null 05/23 13:53
7F:→ minisky0522:当结束位元没错,如果要改/0应该从何下手? 05/23 13:53
8F:→ minisky0522:因为我不可以把它用ASCII的任意另外值取代,都会用到 05/23 13:54
9F:→ minisky0522:是\0 = =" 05/23 13:55
10F:推 fumizuki:\ 用2个\ 替代 null用\0 替代 05/23 22:32
11F:推 fumizuki:传送前Replace(Replace(s, "\", "\\"), Chr(0), "\0") 05/23 22:34
12F:→ fumizuki:接收端Replace(Replace(s, "\\", "\"), "\0", Chr(0)) 05/23 22:34
13F:→ minisky0522:感谢大大的提示,但是因为接收端是使用C++,所以如果 05/26 16:30
14F:→ minisky0522:以上面的方法变成接收端要判断两次,想请问是否其他 05/26 16:30
15F:→ minisky0522:办法可以让Chr(0)送出去且接收端可以直接收到的呢? 05/26 16:31
16F:推 fumizuki:没听说过方法 分批送资料如何?(就是以null分割成数次传送 05/26 20:44
17F:→ minisky0522:何解?预定最坏办法就是上面替代的方法,这分批送 05/26 21:39
18F:→ minisky0522:是什麽意思呢?若是切成两个以上送,那接收端一样要 05/26 21:40
19F:→ minisky0522:作判断是吧?我最大目的是要让接收端直接收7bits0 05/26 21:41
20F:推 fumizuki:第二个替代方案不需要Replace 接收端亦不用判断 05/27 06:37
21F:→ fumizuki:但传送端需Split分割传送的资料 接收端要合并收到的资料 05/27 06:38
22F:推 fumizuki:我是以一连串的资料中有某几个byte有null为例@@ 05/27 06:39
23F:→ fumizuki:如果只传送一个null的话 可能还是要用其他字元替代了@@ 05/27 06:40
24F:→ minisky0522:谢谢版主的教导啦..最後应该只能用替代的方法了..谢啦 05/28 14:53