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