作者LaPass (LaPass)
看板java
標題[問題] byte[] 轉 String
時間Wed Oct 17 10:30:05 2012
寫網路連線時,遇到一個狀況,是像這樣:
byte[] b=new byte[1024];
DatagramSocket socket=new DatagramSocket(9000);
DatagramPacket packet=new DatagramPacket(b, 1024);
socket.receive(packet);
System.out.println("訊息("+new String(packet.getData())+")");
這裡出現的內容會是
訊息(HELLO! 這是測試訊息 )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
↑
這裡會出現一大堆空白
除了把結尾的空白replace掉之外
請問有辦法解決空白的問題嗎? (例如找字串結尾的識別標誌)
這樣看起來很醜,而起且沒辦法知道對方是傳空白過來,或是根本沒傳
題外話,之前在跟中華電信的簡訊API做銜接時
也看到取得的訊息後有一大串空白
現在想起來..... 應該也是同樣的狀況
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.16.65
1F:→ qrtt1:空白是 byte[] initial 時就有的,重點是你要指定存值的長度 10/17 10:41
2F:→ Lordaeron:byte array 預設是 0 吧. 10/17 10:46
3F:推 AtarashiAko:既然是String的話,用trim()如何?不過對方是否傳空白 10/17 10:58
4F:→ AtarashiAko:就得在trim()前行判斷了 10/17 10:59
5F:→ LaPass:發送的時候是用 byte[] b="字串".getBytes(); 10/17 11:01
6F:→ LaPass:然後包成packet時用 b,b.length 這樣 10/17 11:03
7F:→ qrtt1:packet 有 getLength() 方法,我想應該是問它唄 10/17 11:04
8F:→ LaPass:沒辦法的話..... 就只能用trim()了.... 10/17 11:04
9F:→ LaPass:謝謝 我試試看 10/17 11:06
10F:→ LaPass:成功 new String(packet.getData(),0,packet.getLength()) 10/17 11:12
11F:→ gameking:感覺上面那一長串好像出現了表情符號XDD 10/19 00:28