作者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