[VB6 ] 關於ASCII中的"null"

看板Visual_Basic作者 (我是新手...)時間16年前 (2008/05/21 16:44), 編輯推噓7(7017)
留言24則, 4人參與, 最新討論串1/1
小弟想用RS232傳送ASCII碼 但是遇到一個問題 就是當ASCII是 "null"的時候 (也就是二進制 0000000) 會收不到資料,就連之後的資料也會不見或錯誤 收不到資料的原因可以理解,因為原本他就是空字元 所以應該是這樣收不到資料 因為我是先將二進制轉ASCII之後再傳送 所以這個null很困擾我 有什麼方法可以讓它轉null以後仍然可以將他傳送出去的嗎? 也就是收的到null這個ASCII. 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.111.72

05/22 12:18, , 1F
NULL 和 空字元應該不一樣
05/22 12:18, 1F

05/22 14:30, , 2F
應該是不一樣,不過我用Asc("")也沒辦法顯示..
05/22 14:30, 2F

05/22 15:48, , 3F
而且我送一串,中間有null的話,後面的就全部不送了><
05/22 15:48, 3F

05/22 18:47, , 4F
感覺好像是C String把null視為字串結束字元的問題?
05/22 18:47, 4F

05/23 06:34, , 5F
你可以把null改成其他字元 例如:\0
05/23 06:34, 5F

05/23 13:53, , 6F
請問改成 /0的意思是送/0嗎?我測試的結果他是把null
05/23 13:53, 6F

05/23 13:53, , 7F
當結束位元沒錯,如果要改/0應該從何下手?
05/23 13:53, 7F

05/23 13:54, , 8F
因為我不可以把它用ASCII的任意另外值取代,都會用到
05/23 13:54, 8F

05/23 13:55, , 9F
是\0 = ="
05/23 13:55, 9F

05/23 22:32, , 10F
\ 用2個\ 替代 null用\0 替代
05/23 22:32, 10F

05/23 22:34, , 11F
傳送前Replace(Replace(s, "\", "\\"), Chr(0), "\0")
05/23 22:34, 11F

05/23 22:34, , 12F
接收端Replace(Replace(s, "\\", "\"), "\0", Chr(0))
05/23 22:34, 12F

05/26 16:30, , 13F
感謝大大的提示,但是因為接收端是使用C++,所以如果
05/26 16:30, 13F

05/26 16:30, , 14F
以上面的方法變成接收端要判斷兩次,想請問是否其他
05/26 16:30, 14F

05/26 16:31, , 15F
辦法可以讓Chr(0)送出去且接收端可以直接收到的呢?
05/26 16:31, 15F

05/26 20:44, , 16F
沒聽說過方法 分批送資料如何?(就是以null分割成數次傳送
05/26 20:44, 16F

05/26 21:39, , 17F
何解?預定最壞辦法就是上面替代的方法,這分批送
05/26 21:39, 17F

05/26 21:40, , 18F
是什麼意思呢?若是切成兩個以上送,那接收端一樣要
05/26 21:40, 18F

05/26 21:41, , 19F
作判斷是吧?我最大目的是要讓接收端直接收7bits0
05/26 21:41, 19F

05/27 06:37, , 20F
第二個替代方案不需要Replace 接收端亦不用判斷
05/27 06:37, 20F

05/27 06:38, , 21F
但傳送端需Split分割傳送的資料 接收端要合併收到的資料
05/27 06:38, 21F

05/27 06:39, , 22F
我是以一連串的資料中有某幾個byte有null為例@@
05/27 06:39, 22F

05/27 06:40, , 23F
如果只傳送一個null的話 可能還是要用其他字元替代了@@
05/27 06:40, 23F

05/28 14:53, , 24F
謝謝版主的教導啦..最後應該只能用替代的方法了..謝啦
05/28 14:53, 24F
文章代碼(AID): #18C-3wCL (Visual_Basic)