[問題] byte[]轉換

看板java作者 (小澤)時間15年前 (2010/08/06 03:57), 編輯推噓3(307)
留言10則, 5人參與, 最新討論串1/1
請問一下, 我利用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

08/06 04:45, , 1F
==.=== 你怎麼印出那個 byte[] 的
08/06 04:45, 1F

08/06 05:13, , 2F
看起來是hashcode
08/06 05:13, 2F

08/06 05:28, , 3F
那個一定是陣列內建的 .toString() = =
08/06 05:28, 3F

08/06 12:47, , 4F
印的方式 s.getByte(),可以印出來
08/06 12:47, 4F
為什麼不能連續推文(/‵Д′)/~ ╧╧ 想請問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)

08/06 13:29, , 5F
查了好像是 toString()後的產物0.0
08/06 13:29, 5F
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)

08/06 16:26, , 6F
==.==== 真的讓你用推文... 你受得了嗎? XD
08/06 16:26, 6F

08/06 17:41, , 7F
[B@42e816應該是預設hascode.預設的hadecode值是
08/06 17:41, 7F

08/06 17:44, , 8F
memory address.
08/06 17:44, 8F

08/06 17:46, , 10F
/java/IandI/objectclass.html
08/06 17:46, 10F
文章代碼(AID): #1CMnUwZG (java)