Re: [問題] bytes 轉 integer

看板java作者 (:p)時間19年前 (2006/06/02 10:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《PsMonkey (痞子軍團團長)》之銘言: : ※ 引述《Dancer31 (:p)》之銘言: : : 我想用4個byte來存一個int變數 : Java 本來就是用 4byte 來處理一個 int... Orz : : java有內建的函式可以處理轉換的問題嗎? : : 原本打算這樣轉.. : : public int bytes2int(byte[] bytes){ : : return ((int) bytes[0]) | : : ((int) bytes[1])<<8 | : : ((int) bytes[2])<<16 | : : ((int) bytes[3])<<24 ; : : } : : 結果只有return bytes[0]的值 @@ : : 想請問一下該怎麼寫比較好.. : : 感謝~ : 目前看來最快而且最健.... 康的做法是... : return new BigInteger(bytes).intValue(); : 哈哈哈哈... [逃] BigInteger(byte[] val)要求的byte是Big-endian order 剛好跟我要的相反orz 我找到一篇文章剛好有我要的函式 也解決我的問題 private final byte w[] = new byte[8]; public synchronized int readInt() throws IOException { this.in.readFully(w, 0, 4); return (w[3]) << 24 | (w[2] & 0xff) << 16 | (w[1] & 0xff) << 8 | (w[0] & 0xff); } 原文出處 http://www.javaworld.com.tw/jute/post/view?bid=29&id=49582&sty=3 想請問一下為什麼要加上 & 0xff阿? 和0xff做and出來的值不就跟原本一樣嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.94.242
文章代碼(AID): #14VwXVfo (java)
文章代碼(AID): #14VwXVfo (java)