java 實現(xiàn)取int型的第二個字節(jié)的數(shù)
取int型的第二個字節(jié)的數(shù)
無意中看到某個題目,前提條件,一個byte最多表示256位,因為其是由8個位表示 ,八個1 最多表示256位。
一個int由32位組成,所以是4個byte表示。題目要求是給定一個int數(shù)字,問第二個byte是多少。剛開始不會寫。
再后來復(fù)習nio時,突然想到這題。
1.首先創(chuàng)建 Bytebuffer
其內(nèi)部是由byte組成的數(shù)組。因為我們保存一個int 只需要創(chuàng)建一個大小為4byte的即可。下面看代碼。
? public static void main(String[] args) throws IOException {
? ? ? ? ByteBuffer bb=ByteBuffer.allocate(4); //創(chuàng)建大小為4的byteBuffer
? ? ? ? bb.asIntBuffer().put(5566); //以int視圖將任意int數(shù)存進去 ? ? ?
? ? ? ? System.out.println(Arrays.toString(bb.array())); ? ?//打印出改bytebuffer,其中想要第幾個byte就取出就好了
? ? }結(jié)果
[0, 0, 21, -66]
2.通過位運算計算
首先
int a=5566;
a=a>>8;
a=a&0xff;
得到的a就是 第二位的值
3.附一個int轉(zhuǎn)byte數(shù)組
? private static ?byte[] intToByte(int in){
? ? byte [] b=new byte[4];
? ? b[3]= (byte) (in&0xff);
? ? b[2]= (byte) (in>>8 &0xff);
? ? b[1]= (byte) (in>>16 &0xff);
? ? b[0]= (byte) (in>>24 &0xff);
? ? return b;
? ? }int的取值范圍
int型的數(shù)據(jù)字節(jié)長度是4,一共是32位,第一位用于表示正負號,其他位的數(shù)字組成它所代表的值,
例如7的二進制表示形式為
00000000 00000000 00000000 00000111
當表示負數(shù)的時候,則采用的是補碼的形式,第一位是1,
例如-7的二進制表示為
11111111 11111111 11111111 11111001
int型數(shù)據(jù)的取值范圍:-2^31—-2^31-1
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用java反射將結(jié)果集封裝成為對象和對象集合操作
這篇文章主要介紹了使用java反射將結(jié)果集封裝成為對象和對象集合操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Spring Security Oauth2.0 實現(xiàn)短信驗證碼登錄示例
本篇文章主要介紹了Spring Security Oauth2.0 實現(xiàn)短信驗證碼登錄示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
netty對proxy protocol代理協(xié)議的支持詳解
這篇文章主要為大家介紹了netty對proxy protoco代理協(xié)議的支持詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07

