作者Dancer31 (:p)
看板java
标题Re: [问题] bytes 转 integer
时间Fri Jun 2 11:10:27 2006
※ 引述《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