Re: [問題] bytes 轉 integer
※ 引述《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
討論串 (同標題文章)