作者polomoss (小泽)
看板java
标题[问题] byte[]转换
时间Fri Aug 6 03:57:43 2010
请问一下,
我利用sniffer撷取封包,
利用ip4.destination()函式可以回传ip
回传的type是byte[]
我得到的资料是→ [B@42e816
但是我不管怎麽转换,转回string都会是乱码
我试着反向操作,先宣告String s = "192.168.0.1"
把它转成byte[]可以得到 [B@42e816
不知道是不是ip4回传的多了空格还什麽
导致乱码~~
网路查到好像要转成Unicode String的样子
ex. String (byte[] data,String enc) ←但不能用@@
有人知道原因/解法吗?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.131.253
1F:推 PsMonkey:==.=== 你怎麽印出那个 byte[] 的 08/06 04:45
2F:→ walm20:看起来是hashcode 08/06 05:13
3F:推 LPH66:那个一定是阵列内建的 .toString() = = 08/06 05:28
4F:→ polomoss:印的方式 s.getByte(),可以印出来 08/06 12:47
为什麽不能连续推文(/‵Д′)/~ ╧╧
想请问why:
String s = "192.168.0.1";
System.out.println(s.getByte());
→[B@42e816
(这个长相就跟监听封包回传的一样,所以我问题就是如何转回去)
System.out.println(new String(s.getByte()));
→192.168.0.1
(此时转的回去,我就想是不是封包经过传输有编码的问题)
结果刚刚发现:
String s = "any thing"
转成byte[],印出来都是[B@42e816
然後我就无解了。
请问我的观念哪边有错 & 这串[B@42e816到底是什麽!?
谢谢
※ 编辑: polomoss 来自: 220.136.106.19 (08/06 13:25)
5F:→ polomoss:查了好像是 toString()後的产物0.0 08/06 13:29
byte[] address = ip4.source();
String ip = "";
for (int i=0; i<4; i++) {
ip += address[i] & 0xff;
if (i != 3)
ip += ".";
}
找到解法,自问自答xd
※ 编辑: polomoss 来自: 220.136.106.19 (08/06 14:39)
6F:推 PsMonkey:==.==== 真的让你用推文... 你受得了吗? XD 08/06 16:26
7F:→ n3oanderson:[B@42e816应该是预设hascode.预设的hadecode值是 08/06 17:41
8F:→ n3oanderson:memory address. 08/06 17:44
10F:→ n3oanderson:/java/IandI/objectclass.html 08/06 17:46